Android实例系列---04.文件操作
Android中文件存储分为两类,一类在文件系统中,一类在存储在SDCard中
1.文件系统内
?
public class FileActivity extends Activity {
? ? @Override public void onCreate(Bundle savedInstanceState) {
? ? ? ? ...?
? ? ? ? ?FileOutputStream outStream = this.openFileOutput("itcast.txt", Context.MODE_PRIVATE);
? ? ? ? ?outStream.write("传智播客".getBytes());
? ? ? ? ?outStream.close(); ??
? ? }
}
openFileOutput()方法的第一参数用于指定文件名称,不能包含路径分隔符“/” ,如果文件不存在,Android 会自动创建它。创建的文件保存在/data/data/<package name>/files目录,如: /data/data/cn.itcast.action/files/itcast.txt ,通过点击Eclipse菜单“Window”-“Show View”-“Other”,在对话窗口中展开android文件夹,选择下面的File Explorer视图,然后在File Explorer视图中展开/data/data/<package name>/files目录就可以看到该文件。
openFileOutput()方法的第二参数用于指定操作模式,有四种模式,分别为:
Context.MODE_PRIVATE ? ?= ?0
Context.MODE_APPEND ? ?= ?32768
Context.MODE_WORLD_READABLE = ?1
Context.MODE_WORLD_WRITEABLE = ?2
?
2.SDCard中
配置AndroidManifest.xml
?
public class FileService {private Context context;public FileService(Context context) {this.context = context;}/** * 以私有文件保存内容 * @param filename 文件名称 * @param content 文件内容 * @throws Exception */public void saveToSDCard(String filename, String content) throws Exception{File file = new File(Environment.getExternalStorageDirectory(), filename);FileOutputStream outStream = new FileOutputStream(file);outStream.write(content.getBytes());outStream.close();}/** * 以私有文件保存内容 * @param filename 文件名称 * @param content 文件内容 * @throws Exception */public void save(String filename, String content) throws Exception{FileOutputStream outStream = context.openFileOutput(filename, Context.MODE_PRIVATE);outStream.write(content.getBytes());outStream.close();}/** * 以追加方式保存内容 * @param filename 文件名称 * @param content 文件内容 * @throws Exception */public void saveAppend(String filename, String content) throws Exception{// ctrl+shift+y / xFileOutputStream outStream = context.openFileOutput(filename, Context.MODE_APPEND);outStream.write(content.getBytes());outStream.close();}/** * 保存内容,注:允许其他应用从该文件中读取内容 * @param filename 文件名称 * @param content 文件内容 * @throws Exception */public void saveReadable(String filename, String content) throws Exception{FileOutputStream outStream = context.openFileOutput(filename, Context.MODE_WORLD_READABLE);outStream.write(content.getBytes());outStream.close();}/** * 保存内容,注:允许其他应用往该文件写入内容 * @param filename 文件名称 * @param content 文件内容 * @throws Exception */public void saveWriteable(String filename, String content) throws Exception{FileOutputStream outStream = context.openFileOutput(filename, Context.MODE_WORLD_WRITEABLE);outStream.write(content.getBytes());outStream.close();}/** * 保存内容,注:允许其他应用对该文件读和写 * @param filename 文件名称 * @param content 文件内容 * @throws Exception */public void saveRW(String filename, String content) throws Exception{FileOutputStream outStream = context.openFileOutput(filename, Context.MODE_WORLD_READABLE+ Context.MODE_WORLD_WRITEABLE);outStream.write(content.getBytes());outStream.close();}/** * 读取文件内容 * @param filename 文件名称 * @return * @throws Exception */public String readFile(String filename) throws Exception{FileInputStream inStream = context.openFileInput(filename);byte[] buffer = new byte[1024];int len = 0;ByteArrayOutputStream outStream = new ByteArrayOutputStream();while( (len = inStream.read(buffer))!= -1){outStream.write(buffer, 0, len);}byte[] data = outStream.toByteArray();//得到文件的二进制数据outStream.close();inStream.close();return new String(data);}}??
