38.特殊操作流

1.标准输入流

public final class System

  • public static final InputStream in“标准”输入流。 
  • 该流已经打开,准备提供输入数据。 通常,该流对应于键盘输入或由主机环境或用户指定的另一个输入源。
  • public static final PrintStream out“标准”输出流。
  • 此流已经打开并准备好接受输出数据。 通常,此流对应于显示输出或由主机环境或用户指定的另一个输出目标。

    对于简单的独立Java应用程序,编写一行输出数据的典型方法是:

     

     System.out.println(data)
    
     public static void main(String[] args) throws IOException {
    // 1.       InputStream inputStream = System.in;
    //        int by;
    //        while ((by=inputStream.read())!=-1){
    //            System.out.println(((char)by));
    //        }
    ////        如何把字节流转化为字符流?用转换流
    // 2.       InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
    ////        使用字符流能不能实现一次读一行数据?可以,但是一次读取一行数据是字符流的特有方法:
    // 3.       BufferedReader bufferedWriter = new BufferedReader(inputStreamReader);
    
    //        上面三步其实可以合成一步:
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
            System.out.println("请输入一行字符串:");
            String s = bufferedReader.readLine();//不可以读取换行符
            System.out.println("您输入的内容是:" + s);
            System.out.println("请输入一个整数:");
            int i = Integer.parseInt(bufferedReader.readLine());
            System.out.println("您输入的整数是:" + i);
    //         自己实现键盘录入太麻烦了,于是java封装了一个输入类供我们使用:
            Scanner scanner = new Scanner(System.in);
            String s1 = scanner.nextLine();
    
        }

     

     2.标准输出流

    //public static final PrintStream out“标准”输出流。
            PrintStream out = System.out;
    //        public class PrintStream extends FilterOutputStream
    //System.out本质是一个字节输出流
            out.println("123");
            out.print(1);//必须带参数
            System.out.print(2);
            System.out.println(123);

     3.字节打印流,字符打印流

    //        PrintStream​(String fileName) 使用指定的文件名创建新的打印流
            PrintStream stream = new PrintStream("java_base_learn.txt");//写到项目根目录下面的java_base_learn.txt文件里面
    //        普通字节输出流写数据方法
            stream.write(97);//a
            stream.write(98);//b
    //        特有方法写数据
            stream.println(97);//97
            stream.println(98);//98
            stream.close();

            PrintWriter printWriter = new PrintWriter("java_base_learn2.txt");
            printWriter.write("write第一个字符串");
            printWriter.println("println输出的字符串");
            printWriter.close();
            PrintWriter printWriter1 = new PrintWriter(new FileWriter("java_base_learn3.txt"), true);
            printWriter1.println("自动刷新的构造方法创建的对象创建的字符串");
            printWriter1.close();

    字符打印流改进原来复制文件的方法:

    //        需求:将项目根目录下的java_base_learn3.txt文件内容复制到项目根目录下的java_base_learn4.txt文件
    //        原方法实现:
            BufferedReader bufferedReader = new BufferedReader(new FileReader("java_base_learn3.txt"));
            BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("java_base_learn4.txt"));
            String line;
            while ((line=bufferedReader.readLine())!=null){
                bufferedWriter.write(line);
                bufferedWriter.newLine();
                bufferedWriter.flush();
            }
            bufferedWriter.close();
            bufferedReader.close();
    //        
    //        改进方法实现:
            BufferedReader bufferedReader = new BufferedReader(new FileReader("java_base_learn3.txt"));
            PrintWriter printwriter = new PrintWriter(new FileWriter("java_base_learn4.txt",true));
            String line;
            while ((line=bufferedReader.readLine())!=null){
                printwriter.println(line);
            }
            bufferedWriter.close();
            bufferedReader.close();


     
原文地址:https://www.cnblogs.com/luzhanshi/p/13188658.html