Java 中IO流字符流详解及实例
Java—IO流字符流
java的文本(char)是16位无符号整数,是字符的unicode编码(双字节编码)。
文件是bytebytebyte...的数据序列。
文本文件是文本(char)序列按照某种编码方案(uft-8、utf-16be、gbk)序列化为byte的存储结果。
字符流(Reader、Writer)-->操作的是文本、文本文件
1.字符的处理,一次处理一个字符
2.字符的底层仍然是基本的字节序列
3.字符流的基本实现:
InputStreamReader是字节流通向字符流的桥梁:它使用指定的charset读取字节并将其解码为字符。
OutputStreamWriter是字符流通向字节流的桥梁:可使用指定的charset将要写入流中的字符编码成字节。
publicclassISReaderAndOSWriter{ publicstaticvoidmain(String[]args)throwsIOException{ FileInputStreamin=newFileInputStream("F:\\javaio\\java.txt"); FileOutputStreamout=newFileOutputStream("F:\\javaio\\java1.txt"); InputStreamReaderisr=newInputStreamReader(in,"gbk"); OutputStreamWriterosw=newOutputStreamWriter(out,"gbk"); intc; //while((c=isr.read())!=-1){ //System.out.print((char)c); //} char[]buf=newchar[8*1024]; while((c=isr.read(buf,0,buf.length))!=-1){ Strings=newString(buf,0,c); //System.out.println(s); osw.write(s); } isr.close(); osw.close(); } }
4.文件读写流,FileReader和FileWriter,读取字符文件和写入字符文件的便捷类。
publicclassFileReaderAndFileWriter{ publicstaticvoidmain(String[]args)throwsException{ FileReaderfr=newFileReader("F:\\javaio\\javautf.txt"); FileWriterfw=newFileWriter("F:\\javaio\\javautf1.txt"); //FileWriterfw=newFileWriter("F:\\javaio\\javautf1.txt",true);//向指定文件中追加内容 char[]buf=newchar[1*1024]; intc; while((c=fr.read(buf,0,buf.length))!=-1){ System.out.println(c); fw.write(buf,0,c); fw.flush(); } fr.close(); fw.close(); } }
5.字符流的过滤器
BufferedReader,一次读一行
BufferedWriter/PrintWriter,一次写一行
publicclassBufRAndBufWOrPrintW{ publicstaticvoidmain(String[]args)throwsException{ BufferedReaderbr=newBufferedReader(newInputStreamReader(newFileInputStream("F:\\javaio\\javautf.txt"))); //BufferedWriterbw=newBufferedWriter(newOutputStreamWriter(newFileOutputStream("F:\\javaio\\javautf2.txt"))); PrintWriterpw=newPrintWriter("F:\\javaio\\javautf3.txt"); Strings; while((s=br.readLine())!=null){ //一次读一行,不能识别换行符 //bw.write(s); //bw.newLine();//写入一个行分隔符 //bw.flush(); pw.println(s);//通过写入行分隔符字符串终止当前行 pw.flush(); } br.close(); //bw.close(); pw.close(); } }
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!