java1.7与Android中的文件I/O操作(草稿)

说明:文件I/O的关键类比较多,这里总结一下。

参考:《Java 7 入门经典》

1、Java输入流

图1,java常用输入输出流的结构图(第一版)

1)标准流


标准流


类型


方法


System.in


InputStream


System.out


PrintStream


例如:printf(“b=%2$-15.2f”,a,b)


System.err

2)字节型

典型方式-1:从文件中读取

 File file = ...
   InputStream in = null;
   try {
     in = new BufferedInputStream(new FileInputStream(file));
     ...
    finally {
     if (in != null) {
       in.close();
     }
   }
 }

典型方式-2:从文件中读取(java1.7)

Files.newInputStream(Path file)
Path file = Path.get(“D:/cao.java”)
   InputStream in = null;
   try {
    in = new BufferedIntputStream(Files.newInputStream(file));
     ...
    finally {
     if (out != null) {
       out.close();
     }
   }
 }

典型方式-3从控制台读取

in = new BufferedInputStream(System.in);

3)字符型

典型方式-1:从文件中读取(***不太好***)

BufferedReader buf=new BufferedReader(new FileReader(String file))//不能编码
BufferedReader buf = new BufferedReader(new FileReader("file.java"));

典型方式-2:从文件中读取(***较好***)

BufferedReader buf=new BufferedReader(new InputStreamReader(new FileInputStream(String file), String charsetName))  //可以编码
InputStreamReader(InputStream in, String charsetName)
 File file = ...
 ...
BufferedReader buf = new BufferedReader(new InputStreamReader(new FileInputStream(String file), “utf-8”);

典型方式-3:从文件中读取(***java1.7最佳**)

InputStream newInputStream(Path path,OpenOption... options)

Path file=Paths.get();
…
BufferedInputStream in=new BufferedInputStream(Files.newInputStream(file, Charset.forName(“UTF-8”)))

4)通道输入流

(-- 待完成 --)

2、Java输出流

1)字节型

典型方式-1:打开文件的输出流

FileOutputStream (File file,boolean append),append为true追加模式,没有则新建

 File file = ...
   OutputStream out = null;
   try {
    out = new BufferedOutputStream(new FileOutputStream(file));
     ...
    finally {
     if (out != null) {
       out.close();
     }
   }
 }

典型方式-2:打开文件的输出流(java1.7)

Files.newOutputStream(Pathfile,CREATE,APPEND),没有则新建,追加模式

Path file = Path.get(“D:/caoyanfeng.java”)
   OutputStream out = null;
   try {
    out = new BufferedOutputStream(Files.newOutputStream(file));
     ...
    finally {
     if (out != null) {
       out.close();
     }
   }
 }

2)字符型

典型方式-1:打开文件的输出流(***不好的方式***)

FileWriter(File file,boolean
append),append为true追加模式,没有则新建。不能指定编码方式。

File file = ...
   Writer writer = null;
   try {
    writer = new BufferedWriter(new FileWriter(file));
     ...
    finally {
     if (writer != null) {
       writer.close();
     }
   }
 }

典型方式-2:打开文件的输出流(***较好方式***)

OutputStreamWriter(new
FileOutputStream(File file,  booleanappend),"UTF-8")
, append为true追加模式,没有则新建,utf-8编码

File file = ...
  Writer writer = null;
   try {
    writer = new OutputStreamWriter(new FileOutputStream(file),”UTF-8”);
     ...
   writer.write("曹艳丰");
   writer.flush;
    finally {
     if (writer != null) {
       writer.close();
     }
   }
 }

典型方式-3:打开文件的输出流(***最佳方式***)

Files.newBufferedWriter(Path file,Charset.forName(“UTF-8”), CREATE,APPEND),没有则新建,追加模式,utf-8编码

Path file = Path.get(“D:/cao.java”)
  Writer writer = null;
   try {
    writer = new BufferedWriter(Files. newBufferedWriter (Path file,Charset.forName(“UTF-8”), CREATE,APPEND));
     ...
    finally {
     if (writer != null) {
       writer.close();
     }
   }
 }

3)通道输出流

(-- 待完成 --)

3、Android输入流

Android 的输入输出流基本和java相同,只是路径需要使用手机路径。另外,context提供了操作程序路径下的两个字节流。

FileInputStream openFileInput (String name)

FileOutputStream openFileOutput (String name,int mode)

1)字节型

获得文件的FileInputStream,然后进行封装

BufferedInputStream  in = new BufferedInputStream(new FileInputStream(File file));

典型例子-1:操作本程序data文件夹的IO

Android的context方法

FileInputStream openFileInput (String name)

典型例子-2:指定路径下的IO(同java)

File file=new File(dir,"/data/com.iteye.androidtoast/androidtoast.txt");
BufferedInputStream  in = new BufferedInputStream(new FileInputStream(File file));

2)字符型

3、 Android输出流

1)字节型

获得文件的FileOutputStream,然后进行封装

再将FileOutputStreamfos进行封装进PrintStream 或BufferedOutputStream

BufferedOutputStream out=new  BufferedOutputStream(openFileInput (String name)或

PrintStream out=new BufferedOutputStream(openFileInput (String name))

典型例子-1:操作本程序data文件夹的IO

 FileOutputStream openFileOutput (String name, int mode)
即 FileOutputStream fos= openFileInput (String name)

典型例子-2:操作指定文件夹的下的IO

FileOutputStream(File file, boolean append),与java字节流相同

File dir = Environment.getDataDirectory();//得到data目录
File file=new File(dir,"/data/com.iteye.androidtoast/androidtoast.txt");
FileOutputStream out=new FileOutputStream(file, true);

2)字符型

典型例子-1:打开文件的输出流(***同java,不好的方式***)

File dir = Environment.getDataDirectory();//得到data目录 File file=new File(dir,"/data/com.iteye.androidtoast/androidtoast.txt");
FileWriter fw=new FileWriter(file,true);

到这里可以直接写入文件,也可以进行再次封装

BufferedWriter bw=new BufferedWriter(new FileWriter(file,true));

典型方式-2:打开文件的输出流(***同java,较好方式***)

File file=new File(dir,"/data/com.iteye.androidtoast/androidtoast.txt");
OutputStreamWriter(new FileOutputStream(File file,  boolean append),"UTF-8") // append为true追加模式,没有则新建,utf-8编码

时间: 2024-08-02 16:43:44

java1.7与Android中的文件I/O操作(草稿)的相关文章

Android中的文件读写全面总结

转载请注明出处:http://blog.csdn.net/bettarwang/article/details/41625187 在深入分析Java中的I/O类的特征及适用场合 一文中,我详细介绍了Java中的I/O,但是,如果以为Android中的I/O与Java中一样,那就大错特错了.实际上,它们有一定的相同之外,但更多的是区别,因为Android系统中的文件存放位置不同,读取方式也不一样.下面将详细介绍Android中的文件读写: 一.资源文件的读取,不需要在Manifest文件中添加权限

Android中的文件读写总结

在Android中,文件主要分为两大类,内部存储和外部存储 内部存储的文件是程序私有的,分为普通文件和Cache文件 外部文件也可以是私有的,也可以是共有的,这要根据文件的目录位置来决定 共有文件可以用JAVA的文件处理方法来处理,但是内部文件必须用openfileinput或者openfileoutput来进行打开和关闭 在对SD卡上的文件进行操作之前需要先检查SD卡的状态(是否可读写,可访问等)

cceditbox和cocostudio联合界面点击事件无响应问题,Android中创建文件夹问题

这两个问题折腾了我一天多时间,尽快下班时候把创建文件夹问题给解决了,刚把cceditbox点击事件无响应问题解决了.真是大爽. 1.创建文件夹 _mkdir()这个c函数就行,在vs ide中,定位的头文件是direct.h,但是这个文件不被ndk编译通过,没有这个文件.好吧,死脑筋,开始怀疑eclipse库路径设置有问题,但是不知道哪不对,搜索到了头大地步,好吧,认真仔细一看,原来是在ndk中,_mkdir函数放在了#include <sys/stat.h>中,改为这个头文件就行了. 2.点

在android中读写文件

在android中读写文件 android中只有一个盘,正斜杠/代表根目录. 我们常见的SDK的位置为:/mnt/sdcard 两种最常见的数据存储方式: 一.内存 二.本地 1.手机内部存储 2.外部存储设备(SD卡) 在SD卡中读数据是不需要权限的,但是在SD卡中写数据是要权限的: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 读写文件的方式就是用的Java的文件

Android中的文件权限操作

默认本工程创建的文件本工程对其有读写权限. 我们可以通过context.openFileOutput("文件名", 模式): 我们可以创建私有, 共有, 只读, 只写文件, 默认的文私有文件. 如果别的Android工程访问本工程的文件的话就会受限制, android的内核是linux, 所以他的文件管理和linux中的文件时一样的. 创建文件代码: /** * 创建各种文件 * @throws IOException * */ @SuppressLint({ "WorldW

[笨木头Unity3D]杂记003&#183;Unity在Android中读取文件

这周被一个问题给折腾了几个晚上,那就是在Android中读取文件,这本是一件很简单的事情,可想象总是美好的. 笨木头花心贡献,啥?花心?不,是用心. 转载请注明,原文地址:http://www.benmutou.com/archives/2094 文章来源:笨木头与游戏开发 1.在电脑上读取文件 首先要解决的当然是在电脑上读取文件了,这个并不难,网上一堆资料. 比如: public static string LoadFile(string filePath) { string url = Ap

Android中的文件存储

另见Android中的文件存储 一.前言 文件存储时Android中最基本的一种数据存储方式,它不对存储的内容进行任何的格式化处理,所有数据都是原封不动地保存到文件当中的,因此它比较适合用于存储一些简单的文本数据或二进制数据. 二.将数据存储到文件中 Context类中提供了一个openFileOutput()方法,可以用于将数据存储到指定的文件中. 可以看到,此方法接收两个参数,第一个即是文件的名字,这里不可以包含文件路径,所有的文件都是默认存储到/data/data//files/目录下的.

沙盒模型中各文件夹及操作

某个iphone工程进行文件操作有此工程对应的指定的位置,不能逾越. iphone沙箱模型的有四个文件夹,分别是什么,永久数据存储一般放在什么位置,得到模拟器的路径的简单方式是什么. documents,tmp,app,Library. (NSHomeDirectory()), 手动保存的文件在documents文件里 Nsuserdefaults保存的文件在tmp文件夹里 Documents 目录:您应该将所有de应用程序数据文件写入到这个目录下.这个目录用于存储用户数据或其它应该定期备份的信

【转】 android中的文件操作详解以及内部存储和外部存储

摘要 其实安卓文件的操作和Java在pc环境下的操作并无二致,之所以需要单独讲解是因为安卓系统提供了不同于pc的访问文件系统根路径的api,同时对一个应用的私有文件做了统一的管理.根据我的经验,初学者在这部分感到很容易混淆内部存储和外部存储两个概念. 相对 其实安卓文件的操作和java在pc环境下的操作并无二致,之所以需要单独讲解是因为安卓系统提供了不同于pc的访问文件系统根路径的api,同时对一个应用的私有文件做了统一的管理.根据我的经验,初学者在这部分感到很容易混淆内部存储和外部存储两个概念