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="fgkasdhfkjhsdfkjhads";
StringReader sr=new StringReader(src);
StringWriter
写后,形成一个新的字符串,内部使用的的StringBuffer.
StringWriter sw=new StringWriter();
sw.write("dfasdhjfasd");
sw.toString();
缓冲流:
BufferedReader,处理Reader,提供读取一行的功能。
BufferedWriter,处理Writer,提供newLine()。