IO特殊操作流:标准输入输出流、字节打印流及字符打印流

àì夳堔傛蜴生んèń 2024-04-07 15:47 158阅读 0赞

目录

一、标准输入流

二、标准输出流

三、字节打印流

四、字符打印流

五、复制Java文件打印流改进


一、标准输入流

public static final InputStream in:标准输入流。通常该流对应于键盘输入或由主机环境或用户指定的另个输入源

自己实现键盘录入数据:

  1. public class SystemInDemo {
  2. public static void main(String[] args) throws IOException {
  3. //public static final InputStream in:标准输入流
  4. InputStream is = System.in;
  5. int by;
  6. while ((by = is.read()) != -1) {
  7. System.out.print((char) by);
  8. }
  9. //如何把字节流转换为字符流?用转换流
  10. InputStreamReader isr = new InputStreamReader(is);
  11. //使用字符流能不能够实现一次读取一行数据呢?可以
  12. //但是,一次读取一行数据的方法是字符缓冲输入流的特有方法
  13. BufferedReader br = new BufferedReader(isr);
  14. BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  15. System.out.println("请输入一个字符串:");
  16. String line = br.readLine();
  17. System.out.println("你输入的字符串是:" + line);
  18. System.out.println("请输入一个整数:");
  19. int i = Integer.parseInt(br.readLine());
  20. System.out.println("你输入的整数是:" + i);
  21. //自己实现键盘录入数据太麻烦了,所以Java就提供了一个类供我们使用
  22. Scanner sc = new Scanner(System.in);
  23. }
  24. }

二、标准输出流

public static final PrintStream out:标准输出流。通过该流对应于显示输出或主机环境或用户指定的另一个输出目标

输出语句的本质:是一个标准的输出流

PrintStream ps = System.out;

PrintStream类有的方法,System.out都可以使用

示例代码:

  1. public class SystemOutDemo {
  2. public static void main(String[] args) {
  3. //public static final PrintStream out:标准输出流
  4. PrintStream ps = System.out;
  5. //能够方便地打印各种数据值
  6. ps.print("hello");
  7. ps.print(100);
  8. ps.println("hello");
  9. ps.println(100);
  10. //System.out的本质是一个字节输出流
  11. System.out.println("hello");
  12. System.out.println(100);
  13. System.out.println();
  14. // System.out.print();
  15. }
  16. }

三、字节打印流

打印流分类:

字节打印流:PrintStream

字符打印流:PringWriter

打印流的特点:

只负责输出数据,不负责读取数据

永远不会抛出IOException

有自己的特有方法

字节打印流:

PrintStream(String fileName):使用指定的文件名创建新的打印流

使用继承父类的方法写数据,查看的时候会转码;使用自己特有方法写数据,查看数据原样输出

可以输出语句的目的地

public static void setOut(PrintStream out):重新分配”标准”输出流

示例代码:

  1. public class PrintStreamDemo {
  2. public static void main(String[] args) throws IOException {
  3. //PrintStream(String fileName):使用指定的文件名创建新的打印流
  4. PrintStream ps = new PrintStream("myOtherStream\\ps.txt");
  5. //写数据
  6. //字节输出流有的方法
  7. // ps.write(97);
  8. //使用特有方法写数据
  9. // ps.print(97);
  10. // ps.println();
  11. // ps.print(98);
  12. ps.println(97);
  13. ps.println(98);
  14. //释放资源
  15. ps.close();
  16. }
  17. }

四、字符打印流

字符打印流构造方法
















方法名 说明
PrintWriter(String file Name) 使用指定的文件名创建一个新的PrintWrite,而不需要自动执行刷新
PrintWriter(Writer out,boolean autoFlush) 创建一个新的PrintWriter out:字符输出流autoFlush:一个布尔值,如果为真,则println,printf,或format方法将刷新输出缓冲区

示例代码:

  1. public class PrintWriterDemo {
  2. public static void main(String[] args) throws IOException {
  3. //PrintWriter(String fileName) :使用指定的文件名创建一个新的PrintWriter,而
  4. // 不需要自动执行行刷新
  5. // PrintWriter pw = new PrintWriter("myOtherStream\\pw.txt");
  6. // pw.write("hello");
  7. // pw.write("\r\n");
  8. // pw.flush();
  9. // pw.write("world");
  10. // pw.write("\r\n");
  11. // pw.flush();
  12. // pw.println("hello");
  13. /*
  14. pw.write("hello");
  15. pw.write("\r\n");
  16. */
  17. // pw.flush();
  18. // pw.println("world");
  19. // pw.flush();
  20. //PrintWriter(Writer out, boolean autoFlush):创建一个新的PrintWriter
  21. PrintWriter pw = new PrintWriter(new FileWriter("myOtherStream\\pw.txt"),true);
  22. // PrintWriter pw = new PrintWriter(new
  23. FileWriter("myOtherStream\\pw.txt"),false);
  24. pw.println("hello");
  25. /*
  26. pw.write("\r\n");
  27. pw.flush();
  28. */
  29. pw.println("world");
  30. pw.close();
  31. }
  32. }

五、复制Java文件打印流改进

需求:

把模块目录下的PrintStreamDemo.java 复制到模块目录下的 Copy.java

分析步骤:

根据数据源创建字符输入流对象

根据目的地创建字符输出流对象

读写数据,复制文件

释放资源

代码实现:

  1. public class CopyJavaDemo {
  2. public static void main(String[] args) throws IOException {
  3. /*
  4. //根据数据源创建字符输入流对象
  5. BufferedReader br = new BufferedReader(new
  6. FileReader("myOtherStream\\PrintStreamDemo.java"));
  7. //根据目的地创建字符输出流对象
  8. BufferedWriter bw = new BufferedWriter(new
  9. FileWriter("myOtherStream\\Copy.java"));
  10. //读写数据,复制文件
  11. String line;
  12. while ((line=br.readLine())!=null) {
  13. bw.write(line);
  14. bw.newLine();
  15. bw.flush();
  16. }
  17. //释放资源
  18. bw.close();
  19. br.close();
  20. */
  21. //根据数据源创建字符输入流对象
  22. BufferedReader br = new BufferedReader(new FileReader("myOtherStream\\PrintStreamDemo.java"));
  23. //根据目的地创建字符输出流对象
  24. PrintWriter pw = new PrintWriter(new FileWriter("myOtherStream\\Copy.java"), true);
  25. //读写数据,复制文件
  26. String line;
  27. while ((line = br.readLine()) != null) {
  28. pw.println(line);
  29. }
  30. //释放资源
  31. pw.close();
  32. br.close();
  33. }
  34. }

发表评论

表情:
评论列表 (有 0 条评论,158人围观)

还没有评论,来说两句吧...

相关阅读