Android数据存储之间Files

本文介绍了一个基于Android系统的文件读写示例程序,通过在SD卡上存储和读取用户名等信息,演示了如何使用Java进行文件操作。程序包括界面布局及文件读写的实现。

Android系统本身借用了JAVA里面的读写文件的机制。本文的这个例子就是利用文件的写读对数据进行存储,即当界面的输入文本框改变时,程序将改变的值写入文件中。当程序再运行时则从文件中读取先前保存的值,将文本框填充。

程序的界面同mySharedPreferences例子一样。下面只贴出几个文件的内容:

 

AndroidManifest.xml文件内容如下:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.demo.myFileIo"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".myFileIo"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>


</manifest> 


 

main.xml文件内容如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    
	<TextView android:text="请输入用户名:" 
	android:id="@+id/TextView01" 
	android:layout_width="wrap_content" 
	android:layout_height="wrap_content">
	</TextView>
	
	<EditText android:layout_height="wrap_content" 
	android:layout_width="fill_parent" 
	android:text="@+id/EditText01" 
	android:id="@+id/EditText01">
	</EditText>
	
	<TextView android:text="请输入密码:" 
	android:id="@+id/TextView02" 
	android:layout_width="wrap_content" 
	android:layout_height="wrap_content">
	</TextView>
	
	<EditText android:layout_height="wrap_content" 
	android:layout_width="fill_parent" 
	android:text="@+id/EditText02" 
	android:id="@+id/EditText02">
	</EditText>



</LinearLayout>


myFileIo.java文件内容如下:

 

package com.demo.myFileIo;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.view.KeyEvent;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.TextView.OnEditorActionListener;

public class myFileIo extends Activity {
	//定义各个元素对象
	EditText username;
	EditText password;
	//定义一个要写入的文件的路径
	String path;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        //元素绑定
        username = (EditText)findViewById(R.id.EditText01);
        password = (EditText)findViewById(R.id.EditText02);
        
        File sdDir = Environment.getExternalStorageDirectory();
        //得到Sdcard的路径 
        path = sdDir.getAbsolutePath();
        //得到保存的用户名,如果没有值则设置为空
        username.setText(getUserName());
        password.setText("");
        
        //监听文本框改变,然后保存新的用户名
        username.setOnEditorActionListener(new OnEditorActionListener()
        {

			public boolean onEditorAction(TextView arg0, int arg1, KeyEvent arg2) {
				// TODO Auto-generated method stub
				//保存现在的用户名,下次使用时可读取
				saveUserName(username.getText().toString());
				username.setText(username.getText().toString());
				return false;
			}
        	
        });
    }
    
    private String getUserName()
    {
    	String username = "";
    	//新创建一个文件
    	File file1 = new File(path,"/setting.txt");
    	//如果在SD卡中存此文件,则显示此文本,否则创建文件
    	if(!file1.exists())
    	{
    		//返回空字符串
    		username = "";
    	}
    	else
    	{
    		//读入TXT文本资源,创建输入流。
    		File file = new File(path,"/setting.txt");
    		InputStream is = null;
    		try
    		{
    			is = new FileInputStream(file);
    		}
    		catch(FileNotFoundException el)
    		{
    			el.printStackTrace();
    		}
    		//创建字符存放缓存
    		byte[] buffer = new byte[1024];
    		int rd = 0;
    		//新建输出流
    		ByteArrayOutputStream baops = new ByteArrayOutputStream();
    		//读取文本文件到缓存中
    		try
    		{
    			while((rd = is.read(buffer)) != -1)
    			{
    				baops.write(buffer,0,rd);
    			}
    			//进行中文编码转换
    			String temp = new String(baops.toByteArray(),"GB2312");
    			//关闭输出流
    			baops.close();
    			//将文件内容输出
    			username = temp;
    		}
    		catch(IOException e)
    		{
    			e.printStackTrace();
    		}
    	}
    	
		return username;
    }
    
    private void saveUserName(String username)
    {
    	//新建一个文件
    	//得到文件资源作为读写流
    	byte str[] = username.getBytes();
    	FileOutputStream out;
    	try
    	{
    		//创建文件
    		File file = new File(path+"/setting.txt");
    		file.createNewFile();
    		//打开文件file的OutputStream
    		out = new FileOutputStream(file);
    		//将字符串转换成byte数组写入文件
    		out.write(str);
    		//关闭文件file的OutputStream
    		out.close();
    	}catch(IOException e)
    	{
    		e.printStackTrace();
    	}
    }
}


得到的程序界面如mySharedPreferences例子的界面,在此不再上传图片。

基于遗传算法的微电网调度(风、光、蓄电池、微型燃气轮机)(Matlab代码实现)内容概要:本文档介绍了基于遗传算法的微电网调度模型,涵盖风能、太阳能、蓄电池和微型燃气轮机等多种能源形式,并通过Matlab代码实现系统优化调度。该模型旨在解决微电网中多能源协调运行的问题,优化能源分配,降低运行成本,提高可再生能源利用率,同时考虑系统稳定性与经济性。文中详细阐述了遗传算法在求解微电网多目标优化问题中的应用,包括编码方式、适应度函数设计、约束处理及算法流程,并提供了完整的仿真代码供复现与学习。此外,文档还列举了大量相关电力系统优化案例,如负荷预测、储能配置、潮流计算等,展示了广泛的应用背景和技术支撑。; 适合人群:具备一定电力系统基础知识和Matlab编程能力的研究生、科研人员及从事微电网、智能电网优化研究的工程技术人员。; 使用场景及目标:①学习遗传算法在微电网调度中的具体实现方法;②掌握多能源系统建模与优化调度的技术路线;③为科研项目、毕业设计或实际工程提供可复用的代码框架与算法参考; 阅读建议:建议结合Matlab代码逐段理解算法实现细节,重点关注目标函数构建与约束条件处理,同时可参考文档中提供的其他优化案例进行拓展学习,以提升综合应用能力。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值