package com.example.android_file; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.PrintStream; import android.app.Activity; import android.os.Bundle; import android.os.Environment; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button button = (Button) findViewById(R.id.button1); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // write("测试字符串"); writeSDFile("测试字符串"); } }); Button button2 = (Button) findViewById(R.id.button2); button2.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // Toast.makeText(MainActivity.this, read(), 200).show(); Toast.makeText(MainActivity.this, readSDFile(), 200).show(); } }); } /** * 向程序作用域文件写入内容,路径:/data/data/com.example.android_file/files * * @param content */ private void write(String content) { try { FileOutputStream fileOutputStream = openFileOutput("file.txt", Activity.MODE_APPEND); PrintStream printStream = new PrintStream(fileOutputStream); printStream.println(content); printStream.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } } /** * 获取程序作用域文件的内容,路径:/data/data/com.example.android_file/files * * @return */ private String read() { StringBuffer stringBuffer = new StringBuffer(); FileInputStream fileInputStream = null; try { // openFileInput fileInputStream = openFileInput("file.txt"); byte[] bytes = new byte[1024]; int len = 0; while ((len = fileInputStream.read(bytes)) != -1) { stringBuffer.append(new String(bytes, "utf-8")); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { fileInputStream.close(); } catch (IOException e) { e.printStackTrace(); } } return stringBuffer.toString(); } /** * 向SD文件写入内容 * * @param content */ private void writeSDFile(String content) { if (Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED)) { try { // 获取sd的路径 String path = Environment.getExternalStorageDirectory() .getCanonicalPath() + "/file.txt"; FileOutputStream fileOutputStream = new FileOutputStream(path, true);// true:追加方式 PrintStream printStream = new PrintStream(fileOutputStream); printStream.println(content); printStream.close(); } catch (IOException e) { e.printStackTrace(); } } } /** * 获取SD卡文件内容 * * @return */ private String readSDFile() { StringBuffer stringBuffer = new StringBuffer(); FileInputStream fileInputStream = null; if (Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED)) { // 获取sd的路径 try { String path = Environment.getExternalStorageDirectory() .getCanonicalPath() + "/file.txt"; fileInputStream = new FileInputStream(path); byte[] bytes = new byte[1024]; int len = 0; while ((len = fileInputStream.read(bytes)) != -1) { stringBuffer.append(new String(bytes, "utf-8")); } } catch (IOException e) { e.printStackTrace(); } finally { try { fileInputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } return stringBuffer.toString(); } }
openFileOutput和openFileInput 只能用于/data/data/包名/files 下文件的操作