Android的文件操作
2016-01-19 16:12
369 查看
关于Android的文件操作。
PS:个人对于IO流的理解就是 一切都是基于本机JVM而言。输入和输出易混。
输入就是输入到本机JVM中,而输出则就是从本机JVM输出到其他地方存储。
而IO流分为两种, 一种是字节流。一种是字符流
字节流。InputStream ByteArrayOutputStream
字符流。Reader Buffered BufferedReader InputStreamReader
1.输出流(简单明了)
openFileOutput是Android打开本机存储路径的一个方法。
也就是系统默认的存储路径 data/data/..
2.输入流(简单明了)
上面两种是根据系统默认目录来输入输出的方式。
下面两种自定义路径的输入输出的方式。(以SD卡为例)
3.自定义路径输出流
4.自定义路径输入流
5.使用ByteArrayOutputStream输出流和FileInputStream输入流来解析数据
6.使用BufferedReader去读取数据
7.列出一个File类的方法
PS:个人对于IO流的理解就是 一切都是基于本机JVM而言。输入和输出易混。
输入就是输入到本机JVM中,而输出则就是从本机JVM输出到其他地方存储。
而IO流分为两种, 一种是字节流。一种是字符流
字节流。InputStream ByteArrayOutputStream
字符流。Reader Buffered BufferedReader InputStreamReader
1.输出流(简单明了)
private void outFile(String info) { // 系统默认的存储路径 try { //打开本地的存储路径并创建一个输出流 FileOutputStream fileOutPut = openFileOutput("zhangstar.txt", MODE_PRIVATE); //这里外面用输出流输出一个字符串 //当然不能输出字符串,必须先转换为byte类型的数组 fileOutPut.write(info.getBytes()); //关闭输出流 fileOutPut.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }
openFileOutput是Android打开本机存储路径的一个方法。
也就是系统默认的存储路径 data/data/..
2.输入流(简单明了)
private String inFile() { // 系统默认的存储路径 String info = ""; try { //打开本地的存储路径并创建一个输入流 FileInputStream fileInPut = openFileInput("zhangstar.txt"); //实例一个byte数组 byte[] b = new byte[fileInPut.available()]; //将输入流去读取文件,读取文件转换为字节存入刚刚定义的byte数组 fileInPut.read(b); //再通过转码的形式将byte[]b里面的内容转换为字符串 info = EncodingUtils.getString(b, "UTF-8"); //最后关闭输入流 fileInPut.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return info; }
上面两种是根据系统默认目录来输入输出的方式。
下面两种自定义路径的输入输出的方式。(以SD卡为例)
3.自定义路径输出流
private void customFilePathOutFile(String info) { try { /** 使用自定义路径时,则不能去用openFileOutput去实例了。 /** 必须new一个对象。 */ Environment.getExternalStorageDirectory()表示当前SD卡的路径 FileOutputStream fileOutPut = new FileOutputStream(new File( Environment.getExternalStorageDirectory(), "zhangstar.txt")); fileOutPut.write(info.getBytes()); fileOutPut.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }
4.自定义路径输入流
private String customFilePathInFile() { String info = ""; try { FileInputStream fileInPut = new FileInputStream(new File( Environment.getExternalStorageDirectory(), "zhangstar.txt")); byte[] b = new byte[fileInPut.available()]; fileInPut.read(b); info = EncodingUtils.getString(b, "UTF-8"); fileInPut.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return info; }
5.使用ByteArrayOutputStream输出流和FileInputStream输入流来解析数据
private String ByteAyyayInPutFile() { String info = ""; try { // FileInputStream inputStream = new FileInputStream(new File( Environment.getExternalStorageDirectory(), "zhangstar.txt")); //确定当前输入流的长度(注意的是,一定要作为一个变量) //不能直接写 byte[] b =new byte[inputStream.available()] //否则得不到结果 int length=inputStream.available(); byte[] b = new byte[length]; //实例化一个ByteArrayOutputStream输出流 ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream(); //用输入流去读文件到数组里 while (inputStream.read(b) != -1) { //ByteArrayOutputStream可以当做为一个缓冲区。 //此类实现了一个输出流,其中的数据被写入一个 byte 数组。缓冲区会随着数据的不断写入而自动 //增长。可使用 toByteArray() 和 toString() 获取数据。 arrayOutputStream.write(b, 0, length); } //然后将ByteArrayOutputStream转换为byte类型,最后转换为字符串 // info = EncodingUtils.getString(arrayOutputStream.toByteArray(), "UTF-8"); //后声明的流先关闭 arrayOutputStream.close(); inputStream.close(); } catch (Exception e) { e.printStackTrace(); } return info; }
6.使用BufferedReader去读取数据
private String BufferReaderInPutFile(){ //定义一个字符串缓冲区 StringBuffer info=new StringBuffer(); try { // FileInputStream fileInPut=openFileInput("zhangstar.txt"); //实例化一个BUfferedReader //BufferedReader:从字符输入流中读取文本,缓冲各个字符, //从而实现字符、数组和行的高效读取。 //可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值就足够大了。 BufferedReader bd = new BufferedReader(new InputStreamReader(fileInPut)); String str =""; //按行读取 while((str=bd.readLine())!=null){ //每读取一行字符同添加到StringBuffer里面 info.append(str); } } catch (Exception e) { e.printStackTrace(); } //最后将StringBuffer转换为字符串 return info.toString(); }
7.列出一个File类的方法
File file =new File(Environment.getExternalStorageDirectory(), "xxxx.jpg"); String name =file.getName(); String filename=file.getName();//获取文件名 System.out.println(filename); String filepath=file.getAbsolutePath();//获取文件绝对路径 System.out.println(filepath); String filepath2=file.getPath();//相对路径 System.out.println(filepath2); String parentPath=file.getParent();//父路径 System.out.println(parentPath); boolean b=file.exists();//判断文件是否存在 System.out.println(b);
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories