MainActivity如下:
package cc.cv; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import android.os.Bundle; import android.app.Activity; import android.content.Context; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; /** * Demo描述: * 文件存储详细示例 * * 可利用Context的openFileOutput()方法将数据存储到文件中. * 默认的存储路径为/data/data/<packageName>/files/ * 可利用Context的openFileInput()方法将数据从文件中读出 * * 在Android中常用的存储方式: * SharedPreferences,数据库,SD卡,文件存储. * 对于最后一种方式平时用的不多,现在此写个例子 * 整理和复习一下. * * 注意事项: * 文件存储是不需要权限的与在SD卡上进行文件存储是不一样的 */ public class MainActivity extends Activity { private Button mSaveButton; private Button mGetButton; private Context mContext; private String mFileName; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); init(); } private void init(){ mContext=this; mFileName="testData"; mSaveButton=(Button) findViewById(R.id.saveButton); mSaveButton.setOnClickListener(new ClickListenerImpl()); mGetButton=(Button) findViewById(R.id.getButton); mGetButton.setOnClickListener(new ClickListenerImpl()); } private class ClickListenerImpl implements OnClickListener{ @Override public void onClick(View view) { switch (view.getId()) { case R.id.saveButton: saveDataToFile(mContext,mFileName); break; case R.id.getButton: getDataFromFile(mContext,mFileName); break; default: break; } } } /** * 向File中保存数据 */ private void saveDataToFile(Context context,String fileName){ String data="Hello,All"; FileOutputStream fileOutputStream=null; OutputStreamWriter outputStreamWriter=null; BufferedWriter bufferedWriter=null; try { fileOutputStream=context.openFileOutput(fileName, Context.MODE_PRIVATE); outputStreamWriter=new OutputStreamWriter(fileOutputStream); bufferedWriter=new BufferedWriter(outputStreamWriter); bufferedWriter.write(data); } catch (Exception e) { e.printStackTrace(); }finally{ try { if (bufferedWriter!=null) { bufferedWriter.close(); } } catch (Exception e) { e.printStackTrace(); } } } /** * 从File中读取数据 */ private void getDataFromFile(Context context,String fileName){ FileInputStream fileInputStream=null; InputStreamReader inputStreamReader=null; BufferedReader bufferedReader=null; StringBuilder stringBuilder=null; String line=null; try { stringBuilder=new StringBuilder(); fileInputStream=context.openFileInput(fileName); inputStreamReader=new InputStreamReader(fileInputStream); bufferedReader=new BufferedReader(inputStreamReader); while((line=bufferedReader.readLine())!=null){ stringBuilder.append(line); } System.out.println("--->"+stringBuilder.toString()); } catch (Exception e) { e.printStackTrace(); }finally{ try { if (bufferedReader!=null) { bufferedReader.close(); } } catch (Exception e) { e.printStackTrace(); } } } }
main.xml如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <Button android:id="@+id/saveButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="向File中保存数据" android:layout_centerHorizontal="true" android:layout_marginTop="100dp" /> <Button android:id="@+id/getButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="从File中获取数据" android:layout_centerHorizontal="true" android:layout_marginTop="260dp" /> </RelativeLayout>