private void saveTxtFile(String path, String txt) { try { FileOutputStream fos = new FileOutputStream(path); fos.write(txt.getBytes()); fos.close(); } catch (Exception e) { e.printStackTrace(); } } private String openTxtFile(String path) { String readStr = ""; try { FileInputStream fis = new FileInputStream(path); byte[] b = new byte[fis.available()]; fis.read(b); readStr = new String(b); } catch (Exception e) { e.printStackTrace(); } return readStr; }
private void saveBitmap(String path, Bitmap bitmap) { try { BufferedOutputStream bos = new BufferedOutputStream( new FileOutputStream(path)); bitmap.compress(Bitmap.CompressFormat.JPEG, 80, bos); bos.flush(); bos.close(); } catch (Exception e) { e.printStackTrace(); } } private Bitmap openBitmap(String path) { Bitmap bitmap = null; try { BufferedInputStream bis = new BufferedInputStream( new FileInputStream(path)); bitmap = BitmapFactory.decodeStream(bis); bis.close(); } catch (Exception e) { e.printStackTrace(); } return bitmap; }
下面是一个完整的文件读写代码例子,包括文本文件读写和图片文件读写:
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.text.SimpleDateFormat; import java.util.Date; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Color; import android.os.Bundle; import android.os.Environment; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity implements OnClickListener { private TextView tv_file; private ImageView iv_file; private String txtFile, imgFile; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); String externalDir = Environment.getExternalStorageDirectory().toString(); txtFile = externalDir + "/a.txt"; imgFile = externalDir + "/b.jpg"; tv_file = (TextView) findViewById(R.id.tv_file); iv_file = (ImageView) findViewById(R.id.iv_file); tv_file.setDrawingCacheEnabled(true); Button btn_write = (Button) findViewById(R.id.btn_write); Button btn_read = (Button) findViewById(R.id.btn_read); btn_write.setOnClickListener(this); btn_read.setOnClickListener(this); Button btn_img_save = (Button) findViewById(R.id.btn_img_save); Button btn_img_open = (Button) findViewById(R.id.btn_img_open); btn_img_save.setOnClickListener(this); btn_img_open.setOnClickListener(this); } @Override public void onClick(View v) { if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)!=true) { Toast.makeText(this, "当前SD卡不可用", Toast.LENGTH_LONG).show(); return; } if (v.getId() == R.id.btn_write) { String writeStr = "白日依山尽,\n黄河入海流。\n欲穷千里目,\n更上一层楼。"; saveTxtFile(txtFile, writeStr); String writeDesc = String.format("当前时间为%s\n文件路径为%s\n", getNowDateTime(), txtFile); tv_file.setText(writeDesc); } else if (v.getId() == R.id.btn_read) { File file = new File(txtFile); if (file.exists() != true) { Toast.makeText(this, txtFile+"文件不存在", Toast.LENGTH_LONG).show(); return; } String readStr = openTxtFile(txtFile); String writeDesc = String.format("当前时间为%s\n文件路径为%s\n文件内容为:\n%s\n", getNowDateTime(), txtFile, readStr); tv_file.setText(writeDesc); } else if (v.getId() == R.id.btn_img_save) { tv_file.setBackgroundColor(Color.WHITE); Bitmap bitmap = tv_file.getDrawingCache(); saveBitmap(imgFile, bitmap); } else if (v.getId() == R.id.btn_img_open) { File file = new File(imgFile); if (file.exists() != true) { Toast.makeText(this, imgFile+"文件不存在", Toast.LENGTH_LONG).show(); return; } Bitmap bitmap = openBitmap(imgFile); iv_file.setImageBitmap(bitmap); } } private String getNowDateTime() { SimpleDateFormat s_format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date d_date = new Date(); String s_date = ""; s_date = s_format.format(d_date); return s_date; } private void saveTxtFile(String path, String txt) { try { FileOutputStream fos = new FileOutputStream(path); fos.write(txt.getBytes()); fos.close(); } catch (Exception e) { e.printStackTrace(); } } private String openTxtFile(String path) { String readStr = ""; try { FileInputStream fis = new FileInputStream(path); byte[] b = new byte[fis.available()]; fis.read(b); fis.close(); readStr = new String(b); } catch (Exception e) { e.printStackTrace(); } return readStr; } private void saveBitmap(String path, Bitmap bitmap) { try { BufferedOutputStream bos = new BufferedOutputStream( new FileOutputStream(path)); bitmap.compress(Bitmap.CompressFormat.JPEG, 80, bos); bos.flush(); bos.close(); } catch (Exception e) { e.printStackTrace(); } } private Bitmap openBitmap(String path) { Bitmap bitmap = null; try { BufferedInputStream bis = new BufferedInputStream( new FileInputStream(path)); bitmap = BitmapFactory.decodeStream(bis); bis.close(); } catch (Exception e) { e.printStackTrace(); } return bitmap; } }
点此查看Android开发笔记的完整目录