java IO流

        按照“流”的数据流向,可以将其化分为:输入流和输出流。按照“流”中处理数据的单位,可以将其区分为:字节流和字符流。在java中,字节是占1个Byte,即8位;而字符是占2个Byte,即16位。字节流的抽象基类:

    InputStream,OutputStream

字符流的抽象基类:

  Reader,Writer

1.什么是IO

Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列。Java的I/O流提供了读写数据的标准方法。任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法。

IO又分为流IO(java.io)和块IO(java.nio)

Java.io是大多数面向数据流的输入/输出类的主要软件包。此外,Java也对块传输提供支持,在核心库 java.nio中采用的便是块IO。

流IO的好处是简单易用,缺点是效率较低。块IO效率很高,但编程比较复杂。

这里先讲流IO。

2.流的基本概念

在电脑上的数据有三种存储方式,一种是外存,一种是内存,一种是缓存。比如电脑上的硬盘,磁盘,U盘等都是外存,在电脑上有内存条,缓存是在CPU里面的。外存的存储量最大,其次是内存,最后是缓存,但是外存的数据的读取最慢,其次是内存,缓存最快。这里总结从外存读取数据到内存以及将数据从内存写到外存中。对于内存和外存的理解,我们可以简单的理解为容器,即外存是一个容器,内存又是另外一个容器。那又怎样把放在外存这个容器内的数据读取到内存这个容器以及怎么把内存这个容器里的数据存到外存中呢?

在Java类库中,IO部分的内容是很庞大的,因为它涉及的领域很广泛:

​ 标准输入输出,文件的操作,网络上的数据流,字符串流,对象流,zip文件流等等,java中将输入输出抽象称为流,就好像水管,将两个容器连接起来。将数据从外存中读取到内存中的称为输入流,将数据从内存写入外存中的称为输出流。

FileIntputStream和FileOutputStream类

File file=new File("C:\\Users\\Administrator\\Desktop\\text.txt");
        FileOutputStream fileOutputStream=new FileOutputStream(file);
        byte[] bytes = "hello world".getBytes();
        fileOutputStream.write(bytes);
        fileOutputStream.close();


        FileInputStream fileInputStream=new FileInputStream(file);
        byte[] bytes1=new byte[1024];
        int read = fileInputStream.read(bytes1);
        System.out.println("文件中的信息是"+new String(bytes1,0,read));
        fileInputStream.close();

FileReader和FileWriter类

 File file=new File("C:\\Users\\Administrator\\Desktop\\text.txt");
      FileWriter fileWriter=new FileWriter(file);
      String word="hello";
      fileWriter.write(word);
      fileWriter.close();

      FileReader fileReader=new FileReader(file);
      char[] message=new char[1024];
        int read = fileReader.read(message);
        System.out.println("读入的信息是"+new String(message,0,read));
        fileReader.close();

BufferedReader和BufferedWriter类

关闭流的时候要先关闭缓冲流,这里readLine读入一行数据,newLine写入一个行分隔符

 File file=new File("C:\\Users\\Administrator\\Desktop\\text.txt");
      String[] message=new String[]{"hello","word","helloword"};
      FileWriter fileWriter=new FileWriter(file);
      BufferedWriter bufferedWriter=new BufferedWriter(fileWriter);
      for(int i=0;i<message.length;i++){
          bufferedWriter.write(message[i]);
          bufferedWriter.newLine();
      }
      bufferedWriter.close();
      fileWriter.close();


      FileReader fileReader=new FileReader(file);
      BufferedReader bufferedReader=new BufferedReader(fileReader);
      String tmp=null;
      int i=1;
      while ((tmp=bufferedReader.readLine())!=null){
          System.out.println("第" +i+"行 "+tmp);
          i++;
      }
      bufferedReader.close();
        fileReader.close();

    }

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山河亦问安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值