Android的文件操作
来源:互联网 发布:ummy for mac 编辑:程序博客网 时间:2024/05/20 03:37
关于Android的文件操作。
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);
0 0
- android的文件操作
- android的文件操作
- android的文件操作
- android的文件操作
- android的文件操作
- android的文件操作
- android的文件操作
- android的文件操作
- android的文件操作
- android的文件操作
- android的文件操作
- android的文件操作
- Android的文件操作
- android的文件操作。
- Android的文件操作
- Android的文件操作
- Android文件的操作
- android的文件操作
- 四种常见的 POST 提交数据方式
- Library not loaded: /System/Library/Frameworks/LocalAuthentication.framework
- JSON对象添加元素
- Java-获取本地都有哪些字体
- iOS小技巧–用runtime 解决UIButton 重复点击问题
- Android的文件操作
- Android SharedPreferences的简单使用
- 权重轮询调度算法(WeightedRound-RobinScheduling)-Java实现
- 部分方法总结记录
- SVN分支合并
- 权重轮询调度算法(WeightedRound-RobinScheduling)-Java实现2
- java_Abstract抽象类
- Node:找不到全局安装的模块
- 每次程序启动时 都能够开启一个页面 该页面不是Launcher页