IO流标-准输出流PrintWriter 和 InputStream字节输入流 , 字符高级流OutputStreamWriter 和 InputStreamReade

1. 标准输入流

1)InputStream字节输入流 ,源数据源是标准输入设备(键盘、鼠标、触摸屏)等输入设备,InputStream和Reader是所有输入流的抽象基类。

 1 import java.io.IOException;
 2 import java.io.InputStream;
 3 
 4 public class Test1 {
 5     public static void main(String[] args) throws IOException {
 6         // 输入一句话,然后原样输出
 7 
 8         InputStream in = System.in;
 9 
10         System.out.println("请输入一句话:");
11 
12         byte[] buf = new byte[1024];// 一次读取1024个字节
13         int len;
14         // buf中包含回车和换行
15         len = in.read(buf);
16         String str = new String(buf, 0, len);
17 
18         System.out.println("你输入的是:" + str);
19 
20     }
21 
22 }

2)根据上一篇文章:IO流  的那首诗。从控制台输入这首诗,然后把这首诗写入文件里。

 1 import java.io.BufferedReader;
 2 import java.io.BufferedWriter;
 3 import java.io.File;
 4 import java.io.FileWriter;
 5 import java.io.IOException;
 6 import java.io.InputStream;
 7 import java.io.InputStreamReader;
 8 import java.io.UnsupportedEncodingException;
 9 
10 public class Test2 {
11     public static void main(String[] args) throws IOException, UnsupportedEncodingException {
12 
13         InputStream in = System.in;
14         InputStreamReader reader = new InputStreamReader(in, "GBK");
15         BufferedReader br = new BufferedReader(reader);
16 
17         File file = new File("D:" + File.separator + "javatest" + File.separator + "f.txt");
18 
19         FileWriter writer = new FileWriter(file);
20         BufferedWriter beWriter = new BufferedWriter(writer);
21         String endString = "bye";// 定义一个输入这首诗结束时的标志;
22         System.out.println("请输入一首诗:");
23         while (true) {
24             String line = br.readLine();
25             if (line.equals(endString)) {
26                 break;
27             }
28             
29             beWriter.write(line);//输入一行
30             beWriter.newLine();//换行和回车
31         }
32         
33         beWriter.flush();//刷新缓冲区
34         //关闭通道
35         beWriter.close();
36         writer.close();
37     
38     }
39 }

2. 标准输出流(PrintStream)

1)读取以上目录文件,显示到标准输出设备;

 1 import java.io.BufferedReader;
 2 import java.io.File;
 3 import java.io.FileNotFoundException;
 4 import java.io.FileReader;
 5 import java.io.IOException;
 6 import java.io.PrintStream;
 7 
 8 public class Test1 {
 9     public static void main(String[] args) throws FileNotFoundException, IOException {
10         
11         File file = new File("D:"+File.separator+"javatest"+File.separator+"f.txt");
12         //创建管道
13         FileReader fReader = new FileReader(file);
14         BufferedReader bReader = new BufferedReader(fReader);
15         
16         PrintStream pStream = System.out;
17         
18         String line;//定义一个字符串类型
19         
20         while ((line = bReader.readLine()) != null) {//循环读取文件中每一行,直到为空,就结束。
21             pStream.println(line);
22         }
23         //关闭通道
24         bReader.close();
25         fReader.close();
26     }
27 
28 }

 3.字符打印流 PrinWriter

用PrintWriter类对象的write()、print()、append()方法实现写入字符到文件,看看结果是否相同?

 1 import java.io.BufferedReader;
 2 import java.io.File;
 3 import java.io.FileInputStream;
 4 import java.io.FileNotFoundException;
 5 import java.io.IOException;
 6 import java.io.InputStream;
 7 import java.io.InputStreamReader;
 8 import java.io.PrintWriter;
 9 
10 
11 public class Test1 {
12     public static void main(String[] args) throws FileNotFoundException, IOException {
13         File file = new File("D:"+File.separator+"javatest"+File.separator+"g.txt");
14         
15         PrintWriter pWriter = new PrintWriter(file);
16         
17         pWriter.append("Hello");
18         pWriter.write("这个");
19         pWriter.println("你好");
20         
21         pWriter.close();
22         
23         //将PrintlWriter字符打印流 写文件的信息,输出到控制 台
24         InputStream iStream = new FileInputStream("D:"+File.separator+"javatest"+File.separator+"g.txt");
25         InputStreamReader iStreamReader = new InputStreamReader(iStream);
26         BufferedReader bReader = new BufferedReader(iStreamReader);
27         
28         String line;
29         /*line = bReader.readLine();*/ //写到while循环里
30         while ((line = bReader.readLine()) != null) {
31             
32             System.out.println(line);
33             //line = bReader.readLine();
34         }
35         
36         bReader.close();
37         iStream.close();
38         iStreamReader.close();
39     }
40 
41 }

输出

Hello这个你好

返回结果是相同的,PrinWriter的更多用法,可通过查询JDK API文档

4.Scanner(一般不用,了解即可)

 通过Scanner扫描文件、字节流等等。

 1 import java.io.File;
 2 import java.io.FileNotFoundException;
 3 import java.util.Scanner;
 4 
 5 public class Test1 {
 6     public static void main(String[] args) throws FileNotFoundException {
 7         //通过Scanner扫描文件、字节流等
 8         File file = new File("d:"+File.separator+"javatest"+File.separator+"c.txt");
 9         
10         Scanner sc = new Scanner(file);
11         
12         String line;
13         while (sc.hasNextLine()) {
14             line = sc.nextLine();
15             System.out.println(line);
16         }
17         
18         sc.close();
19     }
20 }

 或者通过扫描指定编码文件

 1 import java.io.File;
 2 import java.io.FileInputStream;
 3 import java.io.FileNotFoundException;
 4 import java.util.Scanner;
 5 
 6 public class Test1 {
 7     public static void main(String[] args) throws FileNotFoundException {
 8         //通过Scanner扫描文件、字节流等
 9         /*File file = new File("d:"+File.separator+"javatest"+File.separator+"c.txt");
10         
11         Scanner sc = new Scanner(file);*/
12         Scanner sc = new Scanner(new FileInputStream(new File("d:"+File.separator+"javatest"+File.separator+"c.txt")));
13         String line;
14         while (sc.hasNextLine()) {
15             line = sc.nextLine();
16             System.out.println(line);
17         }
18         
19         sc.close();
20     }
21 }

 

posted @ 2019-05-07 21:57  abcdjava  阅读(826)  评论(0编辑  收藏  举报