Java基础 I/O(输入/输出)

1、 流概述

  • 流是一组有序的数据序列,根据操作的类型,可分为输入流和输出流两种。

  • I/O提供了一条通道程序,可以使用这条通道把源中的字节序列送到目的地。

  • 虽然I/O流通常与磁盘文件存取有关,但程序的源和目的地也可以是键盘、鼠标、内存或显示器窗口等。

  • java由数据流处理输入/输出模式,程序从指向源的输入流中读取源中的数据。源可以是文件、网络、压缩包或其他数据。

  • 输出流的指向是数据要到达的目的地,程序通过向输出流中写入数据把信息传递到目的地。输出流的目标可以是文件、网络、压缩包、控制台和其他数据输出目标。

2、 输入/输出流

java语言定义了许多类专门负责各种方式的输入/输出,这些类都放在java.io包中。其中,所有输入流都是抽象类InputStream或抽象类Reader的子类;而所有输出流都是抽象类OutputStream或抽象类Writer的子类。

2.1 输入流

InputStream类是字节输入流的抽象类,是所有字节输入流的父类。该类中所有方法遇到错误都会引发IOException。下面是对该类中的一些方法的简要说明。

  • read()方法:从输入流中读取数据的下一个字节。返回0~225范围内的int字节值。如果因为已经到达流末尾而没有可用的字节,则返回 -1。
  • read(byte[] b)方法:从输入流中读取一定长度的字节,并以整数的形式返回字节数。
  • mark(int readlimit)方法:在输入流的当前位置放置一个标记,readlimit参数告知此输入流在标记位置失效之前允许读取的字节数。
  • reset()方法:将输入指针返回当前所做的标记处。
  • skip(long n)方法:跳过输入流上的n个字节,并返回实际跳过的字节数。
  • markSupported()方法:如果当前流支持mark()/reset()操作就返回true。
  • close()方法:关闭此输入流并释放与该流关联的所有系统资源。

Reader类是字符输入流的抽象类,所有字符输入流的实现都是它的子类。

2.2 输出流

OutputStream类是字节输出流的抽象类,此抽象类是表示输出字节流的所有类的超类。OutputStream类中的所有方法均返回void,在遇到错误时会引发IOException异常。下面对OutputStream类中的方法做简单的介绍。

  • write(int b)方法:将制定的字节写入此输出流。
  • write(byte[] b)方法:将指定的byte数组b写入此输出流。
  • write(byte[] b,int off,int len)方法:将指定byte数组中从偏移量off开始的len个字节写入此输出流。
  • flush()方法:彻底完成输出并清空缓存区。
  • close()方法:关闭输出流。

Writer类是字符输出流的抽象类,所有字符输出类的实现都是它的子类。

3、 File类

File类是java.io包中唯一代表磁盘文件本身的对象。File类定义了一些与平台无关的方法来操作文件,可以通过调用File类中的方法,实现创建、删除、重命名文件等操作。File类的对象主要用来获取文件本身的一些信息,如文件所在的目录、文件的长度、文件读写权限等。

3.1 文件的创建与删除

可以使用File类创建一个文件对象。通常使用以下3种构造方法来创建文件对象。

(1)File(String pathname)

该构造方法通过将给定路径名字符串转换为抽象路径名来创建一个新的File实例。语法如下:

new File(String pathname)

其中,pathname指路径名称(包含文件名)。例如:

File file=new File("d:/1.txt");
(2) File(String pathname)

该构造方法根据定义的父路径和子路径字符创(包含文件名)创建一个新的File实例。语法如下:

new File(String parent,String child)
  • parent:父路径字符串,例如D:/ 或D:/doc
  • child:子路径字符串,例如letter.txt
(3) File(File f,String child)

该构造方法根据parent抽象路径名和child路径名字符串创建一个新File实例。语法如下:

new File(File f,String child)
  • f:父路径对象,例如D:/doc/
  • child:子路径字符串,例如letter.txt

当使用File类创建一个文件对象后,例如:

File file=new File("word.txt");

如果当前目录中不存在名称为word的文件,File类对象可以通过调用createNewFile() 方法创建一个名称为word.txt的文件;如果存在word.txt文件,可以通过文件对象的delete()方法将其删除。

public class FileTest {
   
    public static void main(String[] args){
   
        File file=new File("word.txt");
        if(file.exists()){
   
            file.delete();
            System.out.println("文件已删除");
        }else{
   
            try{
   
                file.createNewFile();
                System.out.println("文件已创建");
            }catch (Exception e){
   
                e.printStackTrace();
            }
        }
    }
}

3.2获取文件信息

File类提供了很多方法以获取文件本身信息,其中常用的方法如下所示

方法 返回值 说明
getName() String 获取文件的名称
canRead() boolean 判断文件是否为可读的
canWrite() boolean 判断文件是否可被写入
exits() boolean 判断文件是否存在
length() long 获取文件的长度(以字节为单位)
getAbsolutePath() String 获取文件的绝对路径
getParent() String 获取文件的父路径
isFile() boolean 判断是否是文件
isDirectory() boolean 判断是否为一个目录
isHidden() boolean 判断文件是否为一个隐藏文件
lastModified() long 获取文件最后修改时间
public class FileTest2 {
   
    public static void main(String[] args){
   
        File file=new File("word.txt");
        if(file.exists()){
   
            String name=file.getName();
            Long length=file.length();
            boolean hidden=file.isHidden();
            System.out.println("文件名称:"+name);
            System.out.println(
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值