首页 > 代码库 > 如何确定使用哪一个IO对象

如何确定使用哪一个IO对象

2014.9.3


来源于毕向东老师的讲解


关于java的输入输出,最痛苦的就是:流对象太多,不知道用哪一个


首先,确定体系


一、明确源和目的。

    确定是输出流:writer  outputstream

    还是输入流: reader   inputstream


二、确定操作的数据是不是文本,

然后,我们明确要使用的对象。

       通过设备来区分。



用于操作文件:

fileReader(从文本文件(字符)读取)(编码方式是默认的)(要指定就用InputStreamReader)

fileWriter(向文本(字符)文件写入)默认覆盖,可以指定添加在后边

fileInputStream(从二进制文件读取)

fileOutputStream


PrintStream 是处理流,可以包装OutputStream,用于从内存中方便的向其中print(任何类型)。



控制台:Sytem.out(PrintStream).


键盘:System.in(InputStream).


处理流:

PrintStream,用于处理OutputStream,方便的向其中写入任何数据。(有自动刷新,println或者“\n”)

可以指定编码。PrintStream(OutputStream,"码表");



转换流:

InputStreamReader

InputStreamReader reader=new InputStreamRaeder(System.in);

BufferedReader br=new BufferedReader(reader); 


OutputStreamWriter


转换流的字符编码:

OutputStreamWriter(OutputStream out,"码表")

InputStreamReader(InputStream in,"码表")

        其他编码:

String的构造方法有指定码表

解码:String(byte[],charset);

编码:getBytes(charset);




处理字符串的流:

StringReader

从已有的字符串中读取:

String src="http://www.mamicode.com/fgkasdhfkjhsdfkjhads";

StringReader sr=new StringReader(src);

StringWriter

写后,形成一个新的字符串,内部使用的的StringBuffer.

StringWriter sw=new StringWriter();

sw.write("dfasdhjfasd");

sw.toString();






缓冲流:

BufferedReader,处理Reader,提供读取一行的功能。 

BufferedWriter,处理Writer,提供newLine()。







本文出自 “厚积薄发” 博客,请务必保留此出处http://duanzhenyue.blog.51cto.com/9360091/1550136

如何确定使用哪一个IO对象