Java IO

java IO介绍

Java.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。

Java.io 包中的流支持很多种格式,比如:基本类型、对象、本地化字符集等等。

一个流可以理解为一个数据的序列。输入流表示从一个源读取数据,输出流表示向一个目标写数据。

Java 为 I/O 提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中。
流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流。这时候你就可以想象数据好像在这其中“流”动一样。

在整个Java.io包中最重要的就是5个类和一个接口。5个类指的是File、OutputStream、InputStream、Writer、Reader;一个接口指的是Serializable.掌握了这些IO的核心操作那么对于Java中的IO体系也就有了一个初步的认识了。

主要的类如下:

 1. File(文件特征与管理):File类是对文件系统中文件以及文件夹进行封装的对象,可以通过对象的思想来操作文件和文件夹。 File类保存文件或目录的各种元数据信息,包括文件名、文件长度、最后修改时间、是否可读、获取当前文件的路径名,判断指定文件是否存在、获得当前目录中的文件列表,创建、删除文件和目录等方法。  

 2. InputStream(二进制格式操作):抽象类,基于字节的输入操作,是所有输入流的父类。定义了所有输入流都具有的共同特征。

 3. OutputStream(二进制格式操作):抽象类。基于字节的输出操作。是所有输出流的父类。定义了所有输出流都具有的共同特征。

 4.Reader(文件格式操作):抽象类,基于字符的输入操作。

 5. Writer(文件格式操作):抽象类,基于字符的输出操作。

 6. RandomAccessFile(随机文件操作):一个独立的类,直接继承至Object.它的功能丰富,可以从文件的任意位置进行存取(输入输出)操作。

使用方法

操作流程

在Java中IO操作也是有相应步骤的,以文件操作为例,主要的操作流程如下:

1 使用File类打开一个文件

2 通过字节流或字符流的子类,指定输出的位置

3 进行读/写操作

4 关闭输入/输出

字节输出流:OutputStream

OutputStream是整个IO包中字节输出流的最大父类,
此类是一个抽象类,如果想要使用此类的话,则首先必须通过子类实例化对象,那么如果现在要操作的是一个文件,则可以使用:FileOutputStream类。通过向上转型之后,可以为OutputStream实例化

  import java.io.File;
  import java.io.FileOutputStream;
  import java.io.IOException;
  import java.io.OutputStream;
 
  public class FileOutputStreamTest {
      public static void main(String[] args) throws IOException {
         File f = new File("d:" + File.separator+"test.txt");
         OutputStream out=new FileOutputStream(f);//如果文件不存在会自动创建
         String str="Hello World";
    	byte[] b=str.getBytes();
         out.write(b);//因为是字节流,所以要转化成字节数组进行输出
         out.close();
     }
 }

FileInputStream

该流用于从文件读取数据,它的对象可以用关键字 new 来创建。 InputStream本身也是一个抽象类,必须依靠其子类,如果现在是从文件中读取,就用FileInputStream来实现

字节输入流:InputStream

既然程序可以向文件中写入内容,则就可以通过InputStream从文件中把内容读取进来

 import java.io.File;
  import java.io.FileInputStream;
  import java.io.IOException;
  import java.io.InputStream;
 
  public class FileInputStreamTest {
      public static void main(String[] args) throws IOException {
          File f = new File("d:" + File.separator+"test.txt");
         InputStream in=new FileInputStream(f);
         byte[] b=new byte[1024];
         int len=in.read(b);
         in.close();
         System.out.println(new String(b,0,len));
     }
 }

字符流

在程序中一个字符等于两个字节,那么java提供了Reader、Writer两个专门操作字符流的类。

字符输出流:Writer

Writer本身是一个字符流的输出类,此类本身也是一个抽象类,如果要使用此类,则肯定要使用其子类,此时如果是向文件中写入内容,所以应该使用FileWriter的子类

 import java.io.File;
  import java.io.FileWriter;
  import java.io.IOException;
  import java.io.Writer;
 
  public class FileWriterTest {
      public static void main(String[] args) throws IOException {
          File f = new File("d:" + File.separator+"test.txt");
          Writer out=new FileWriter(f);
        String str="Hello World";
         out.write(str);
         out.close();
     }
 }

字符输入流:Reader

Reader是使用字符的方式从文件中取出数据

Reader本身也是抽象类,如果现在要从文件中读取内容,则可以直接使用FileReader子类。

 import java.io.File;
  import java.io.FileReader;
  import java.io.IOException;
  import java.io.Reader;
 
  public class Test18 {
      public static void main(String[] args) throws IOException {
          File f = new File("d:" + File.separator+"test.txt");
          Reader input=new FileReader(f);
         char[] c=new char[1024];
         int len=input.read(c);
         input.close();
         System.out.println(new String(c,0,len));
     }
 }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值