java笔记八:IO流之字符流与字符缓冲流
2023-09-14 08:57:54 时间
java中字符流主要都是继承于Reader和Writer两个抽象类。用于对字符文本的读写操作。
一、转换类流
1 package com.iotest; 3 import java.io.FileInputStream; 4 import java.io.FileNotFoundException; 5 import java.io.FileOutputStream; 6 import java.io.IOException; 7 import java.io.InputStreamReader; 8 import java.io.OutputStreamWriter; 10 public class ConverseStreamDemo { 12 public static void main(String[] args) { 13 String s = “F:\shar\test\test3.txt”; 14 try { 15 //将字节流转为字符流 16 OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(s)); 17 osw.write(“中国北京”); 18 System.out.println(osw.getEncoding()); 19 osw.close(); 20 osw = new OutputStreamWriter(new FileOutputStream(s,true),”GB2312”); 21 osw.write(“中国北京”); 22 System.out.println(osw.getEncoding()); 23 osw.close(); 24 } catch (FileNotFoundException e) { 25 // TODO Auto-generated catch block 26 e.printStackTrace(); 27 } catch (IOException e) { 28 // TODO Auto-generated catch block 29 e.printStackTrace(); 31 try { 32 //将字节流转为字符流 33 InputStreamReader isr = new InputStreamReader(new FileInputStream(s),”GB2312”); 34 int c; 35 while((c=isr.read()) != -1){ 36 System.out.print((char)c); 38 System.out.println(); 39 isr.close(); 40 } catch (FileNotFoundException e) { 41 // TODO Auto-generated catch block 42 e.printStackTrace(); 43 } catch (IOException e) { 44 // TODO Auto-generated catch block 45 e.printStackTrace(); 49 }
1 package com.iotest; 3 import java.io.FileNotFoundException; 4 import java.io.FileReader; 5 import java.io.FileWriter; 6 import java.io.IOException; 8 使用flush()将流数据刷到目标里,这时流还存活着,还可以继续使用该流进行别的操作。 9 close()虽然也有flush()的效果但是这时流已经死了,你如果想继续使用流的话就必须在此建立流 11 public class MutiplicationTable { 13 public static void main(String[] args) throws IOException { 14 String s = “F:\shar\test\test5.txt”; 15 FileWriter fw = new FileWriter(s); 16 FileReader fr = new FileReader(s); 17 for (int i = 1; i i++) { 18 for (int j = 1; j j++) { 19 String str = i + ““ + j + “=” + ij + “ “; 20 fw.write(str); 22 fw.write(“\r\n”); 23 /flush是指强行将输出流中的数据写到文件里面去。如果写到这里的话就是一行一行的写入文件 24 最好每写完一部分就刷新一次,如果最后刷新的话可能会造成数据的丢失 25 */ 26 fw.flush(); 28 //如果又不写flush()又不写close(),则不会写入任何内容到文本里。只是写到了缓冲区 29 //fw.flush(); 写到这里的话就是所有的内容一起写进文件 30 //fw.close(); close之前会调用flush() 31 //读字符输入流的数据 32 int c; 33 while ((c=fr.read())!=-1) { 34 System.out.print((char)c); 38 }
三、BufferedReader和BufferedWriter
1 package com.iotest; 3 import java.io.BufferedOutputStream; 4 import java.io.BufferedWriter; 5 import java.io.FileOutputStream; 6 import java.io.FileWriter; 7 import java.io.IOException; 9 public class PrimeNumber { 10 BufferedWriter bw = null; 11 String fileName = “F:\shar\test\test7.txt”; 12 //判断是否是质数 13 public boolean isPrime(int n){ 14 for(int i=2;i =n/2;i++){ 15 if(n%i == 0){ 16 return false; 19 return true; 21 void printPrime(int m) throws IOException{ 22 //将字节流转缓冲流 23 bw = new BufferedWriter(new FileWriter(fileName)); 24 int j = 0; 25 for (int i = 2; i i++) { 26 if(isPrime(i)){ 27 j++; 28 String s = String.valueOf(i); 29 String s1 = s + “ “; 30 bw.write(s1); //写入文本文件 31 if(j==10){ 32 j = 0; 33 bw.newLine(); //写入一个行分隔符 34 bw.flush(); //强制刷新 39 bw.close(); 41 public static void main(String[] args) throws IOException { 42 PrimeNumber pn = new PrimeNumber(); 43 pn.printPrime(100); 46 }
四、PrintWriter
1 package com.iotest; 3 import java.io.FileWriter; 4 import java.io.IOException; 5 import java.io.PrintWriter; 7 public class PrintWriterDemo { 9 public static void main(String[] args) throws IOException { 10 int A = 0; //千位 11 int B = 0; //百位 12 int C = 0; //十位 13 int num = 0; 14 String fileName = “F:\shar\test\test8.txt”; 15 FileWriter fw = new FileWriter(fileName); //字符输出流 16 PrintWriter pw = new PrintWriter(fw); //将字节输出流转为PrintWriter 17 for (int i = 1000; i 10000; i++) { 18 A = i/1000; 19 B = i/100 % 10; 20 C = i/10 % 10; 21 if(i%11==0 A == B+C){ 22 pw.print(i+” “); 23 if(++num % 7 == 0){ 24 pw.println(); //写入回车换行 25 pw.flush(); //强制刷新流 29 fw.close(); 33 }
五、标准IO
1 package com.iotest; 3 import java.io.BufferedReader; 4 import java.io.FileWriter; 5 import java.io.IOException; 6 import java.io.InputStreamReader; 7 import java.io.PrintWriter; 8 import java.util.Scanner; 10 public class PackStardIO { 12 public static void main(String[] args) throws IOException { 13 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 14 PrintWriter o = new PrintWriter(System.out); //包装标准输出 15 String s; 16 while((s=br.readLine())!=null s.length()!=0){ 17 o.println(s.toUpperCase()); 18 //o.flush(); //一定要强制刷新让其输出来,否则不会输出 22 }
1 package com.iotest; 3 import java.io.BufferedInputStream; 4 import java.io.BufferedOutputStream; 5 import java.io.BufferedReader; 6 import java.io.FileInputStream; 7 import java.io.FileNotFoundException; 8 import java.io.FileOutputStream; 9 import java.io.IOException; 10 import java.io.InputStreamReader; 11 import java.io.PrintStream; 13 public class StandardIORedirect { 15 public static void main(String[] args) throws IOException { 16 PrintStream console = System.out; 17 BufferedInputStream in = new BufferedInputStream(new FileInputStream(“C:\Documents and Settings\01\桌面\Test\src\com\iotest\StandardIORedirect.java”)); 18 PrintStream out = new PrintStream(new BufferedOutputStream(new FileOutputStream(“F:\shar\test\test9.txt”))); 19 System.setIn(in); //对标准输入流重定向 20 System.setOut(out); 21 System.setErr(out); 22 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 23 String s; 24 while((s=br.readLine())!=null){ //从BufferedReader中读取一行数据 25 System.out.println(s); 27 out.close(); 28 System.setOut(console); 31 }
六、随即访问文件类
1 package com.iotest; 3 import java.io.FileNotFoundException; 4 import java.io.IOException; 5 import java.io.RandomAccessFile; 7 public class RandomRW { 8 public static void main(String[] args) throws IOException { 9 RandomAccessFile raf = new RandomAccessFile(“F:\shar\test\test10.dat”,”rw”); 10 final int DOUBLE_SIZE = 8; 11 for (int i = 0; i i++) { 12 raf.writeDouble(i); 13 System.out.print(“ “ + (double)i); 15 System.out.println(); 16 raf.close(); 17 RandomAccessFile raf1 = new RandomAccessFile(“F:\shar\test\test10.dat”,”rw”); 18 raf1.seek(3DOUBLE_SIZE); //找到某个位置 19 raf1.writeDouble(300); //往该位置插入数据 20 raf1.seek(5DOUBLE_SIZE); 21 raf1.writeDouble(500); 22 raf1.close(); 23 RandomAccessFile raf2 = new RandomAccessFile(“F:\shar\test\test10.dat”,”r”); 24 for (int i = 0; i i++) { 25 System.out.print(“ “+raf2.readDouble()); 27 raf2.close(); 30 }
Java开发——28.I/O流_字符流和字节流 Java中I/O操作主要是指使用java.io包下的内容,进行输入和输出操作;输入叫做读取数据,输出叫做写出数据。主要操作文件内容,结合前面所学的File类,我们可以灵活的读取和写出文件。
Java IO(2)—缓冲字符流以及IO中的装饰者模式 详细介绍了Java IO中的缓冲字符流BufferedWriter、BufferedReader、LineNumberReader的使用方式,以及Java IO中的装饰者模式。
相关文章
- JAVA三元运算符_java中三元运算符详解
- Java服务器热部署的实现原理
- java冒泡排序概练_Java的冒泡排序[通俗易懂]
- java启动器_JAVA基础:Java 启动器如何查找类
- MySQL字段类型如何转为java_Java JDBC中,MySQL字段类型到JAVA类型的转换
- Java转换流_java中的字符使用什么编码
- java -jar没有主清单属性_idea怎么导入jar
- JAVA英文文献_java毕业论文参考文献
- 运筹教学|快速掌握单纯形法(附java代码)
- java计算指定日期的农历代码详解编程语言
- java基础学习总结——对象转型详解编程语言
- Java学习笔记之三java中的变量和常量详解编程语言
- Java toCharArray()方法:将字符串转换成一个字符数组
- 删除Linux中的Java程序(linux删除java)
- 服务器快速搭建Linux Java服务器,实现互联网应用(linux搭建java)
- Linux和Java联手构建编程世界(linux.java)
- 时间解决Java与Redis缓存过期时间问题(redisjava过期)
- 如何在Linux系统中指定Java版本(linux指定java)
- Java程序员的MySQL数据库之旅(java操作mysql数据库)
- 实现Java认证让你离Oracle更近一步(java认证oracle)