IO(输入输出流)

 ------- android培训java培训、期待与您交流! ----------

IO流分类


    
    字符流
        字符输入流 -- Reader
        字符输出流 -- Writer
    字节流
        字节输入流 -- InputStream

        字节输出流 -- OutputStream

字节流的作用: 用于读取、写入图像数据之类的原始字节流(图片、音视频)

字节输出流 -- OutputStream
    写入数据:
        public abstract void write(int b) :  写入一个字节
        public void write(byte[] b) : 写入一个字节数组
        public void write(byte[] b,int off, int len) 写入一个字节数组的一部分

        void close()关闭并释放此输出流
    使用字节输出流的步骤:
           a: 创建字节输出流对象
           b: 写入数据
           c: 释放资源

   FIleOutputStream是OutputStream的子类,它是操作文件的字节输出流,专门同于把数据写入文件.

例如:

   通过FileOutputStream写数据时,自动创建了文件fos.txt并将数据写入文件.需要注意的是,如果是通过FileOutputStream向一个已存在的文件写入数据,那么该文件的内容会首先被清空,在写入新的数据,若希望在已存在的文件中追加新内容,则可以使用FileOutputStream的构造函数FileOutputStream(String fileName , boolean append)来创建文件输出流对象,并把appened参数的设定为true.



字节输入流 -- InputStream
    字节输入流的操作步骤:
        a: 创建字节输入流对象
        b: 获取数据
        c: 释放资源

   FileInputStream 是InputStream的子类,它是操作文件的字节输入流,专门用于读取文件中的数据,由于从文件读取数据是重复的操作,因此需要通过循环语句来实现数据的持续读取,创建的字节流FileInputStream通过read()方法将当前目录文件fos.txt中的数据读取并打印,需要注意的是,在读取文件数据时,必须保证文件是存在并且可读的,否则会抛出文件找不到的异常FileNotFoundException.


在IO包中提供了两个带缓冲的字节流,分别是BufferedIntputStream和BufferedOutputStream这两个流.它们的构造方法中分别接受了InputStream和OutputStream类型的参数作为包装对象,在读写数据时提供缓冲功能.

数据类型分类:
    字节流:
        字节输入流: InputStream
            (高效)字节缓冲输入流:BufferedInputStream

       
        字节输出流: OutputStream
            (高效)字节缓冲输出流: BufferedOutputStream


   
    字符流:
        字符输入流: Reader
            (高效)字符缓冲输入流: BufferedReader


        字符输出流: Writer
            (高效)字符缓冲输出流: BufferedWriter

InputStreamReader 是字节流通向字符流的桥梁

OutputStreamWriter 是字符流通向字节流的桥梁

 ------- android培训java培训、期待与您交流! ----------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以帮你解决这个问题。下面是一个简单的 Java 程序,可以从控制台读取输入行数 n,然后将杨辉三角的前 n 行写入到文件中,并读取并打印出来: ```java import java.io.*; public class YanghuiTriangle { public static void main(String[] args) { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.print("请输入行数 n:"); int n = 0; try { n = Integer.parseInt(br.readLine()); } catch (IOException e) { e.printStackTrace(); } String fileName = "yanghui_triangle.txt"; try (PrintWriter writer = new PrintWriter(new FileWriter(fileName))) { int[][] triangle = new int[n][n]; for (int i = 0; i < n; i++) { triangle[i][0] = 1; triangle[i][i] = 1; for (int j = 1; j < i; j++) { triangle[i][j] = triangle[i-1][j-1] + triangle[i-1][j]; } } for (int i = 0; i < n; i++) { for (int j = 0; j <= i; j++) { writer.print(triangle[i][j] + " "); } writer.println(); } System.out.println("杨辉三角已写入文件 " + fileName); } catch (IOException e) { e.printStackTrace(); } try (BufferedReader reader = new BufferedReader(new FileReader(fileName))) { String line; System.out.println("读取的杨辉三角如下:"); while ((line = reader.readLine()) != null) { System.out.println(line); } } catch (IOException e) { e.printStackTrace(); } } } ``` 在这个程序中,我们首先通过 BufferedReader 从控制台读取输入行数 n,然后使用 PrintWriter 将前 n 行杨辉三角写入到文件 yanghui_triangle.txt 中。最后,我们使用 BufferedReader 再次读取文件并打印输出。注意,在 try-with-resources 语句中创建的流会自动关闭。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值