java笔记——io流

来源:互联网 发布:淘宝天猫交易额 编辑:程序博客网 时间:2024/06/11 13:16

首先这篇文章还是不错的,可以当目录看看: http://blog.csdn.net/jiangwei0910410003/article/details/22376895

然后我按照极客学院上的io教学视频来学的,感觉还不错。

www.jikexueyuan.com/course/215.html

1,字节流读写文件,直接操作即可,而且带缓冲区的方法效率非常高,1000倍。
2,字符流读写文件,最后一行可能会写(读)入多余的数据,(上一次最后的数据,这次并没有读到),所以要用l记录
char[] input;
     while( (l=isr.read(input)) != -1){
          osw.write(input, 0, l);     //从第0个开始读,一共读l个。
     }
亲测,字节的也得这么弄!!
一般来说,字节流读取文件直接上字节数组,缓冲区读大文件(图片,视频等)。字符流主要读写字符文件,一般用FileReader,InputStreamReader打开,用带缓冲区的BufferedReader来包装string来操作。一读直接读一行。写的话printWriter还不错,打印输出,很灵活。

3,缓冲流,不管字节还是字符,最后如果没有把缓冲区写满,可能不会自己向磁盘写出,后面加上flush();强制输出。PrintWriter的构造函数可以指定是否每次都强制输出

4,关闭文件流:先打开,后关闭
5,RandomAccessFile,随机读写文件的类,应用于多线程文件读写,下载,传输,指定内容读写。利用好seek,读写函数很多。
6,apache的commons库,这个有好多io函数,url下载文件,文件复制,文件架操作,文件直接读到string等等,正常写要好多行,人家都给你用静态函数写好了,直接用就行,连对象都不用new。
http://commons.apache.org/proper/commons-io/

下面的原则摘自上面的博客中

(三)Java IO 的一般使用原则 :  

一、按数据来源(去向)分类:

1 、是文件: FileInputStream, FileOutputStream, ( 字节流 )FileReader, FileWriter( 字符 )

2 、是 byte[] : ByteArrayInputStream, ByteArrayOutputStream( 字节流 )

3 、是 Char[]: CharArrayReader, CharArrayWriter( 字符流 )

4 、是 String: StringBufferInputStream, StringBufferOuputStream ( 字节流 )StringReader, StringWriter( 字符流 )

5 、网络数据流: InputStream, OutputStream,( 字节流 ) Reader, Writer( 字符流 )


二、按是否格式化输出分:

1 、要格式化输出: PrintStream, PrintWriter


三、按是否要缓冲分:

1 、要缓冲: BufferedInputStream, BufferedOutputStream,( 字节流 ) BufferedReader, BufferedWriter( 字符流 )


四、按数据格式分:

1 、二进制格式(只要不能确定是纯文本的) : InputStream, OutputStream 及其所有带 Stream 结束的子类

2 、纯文本格式(含纯英文与汉字或其他编码方式); Reader, Writer 及其所有带 Reader, Writer 的子类


五、按输入输出分:

1 、输入: Reader, InputStream 类型的子类

2 、输出: Writer, OutputStream 类型的子类


六、特殊需要:

1 、从 Stream 到 Reader,Writer 的转换类: InputStreamReader, OutputStreamWriter

2 、对象输入输出: ObjectInputStream, ObjectOutputStream

3 、进程间通信: PipeInputStream, PipeOutputStream, PipeReader, PipeWriter

4 、合并输入: SequenceInputStream

5 、更特殊的需要: PushbackInputStream, PushbackReader, LineNumberInputStream, LineNumberReader



0 0