File类以及InputStream,OutputStream的介绍及其用法

1. File类

1.1 File类的介绍

File类是属于java.io.File包下的,File类的一个对象,代表了一个文件或者一个文件目录(俗称文件夹)

1.2 File类的实例创建

在介绍File类的实例创建前,得需要先讲一下相对路径与绝对路径

相对路径:相较于某个路径下指明的路径,即是相对路径

绝对路径:绝对路径即包含了盘符(d:\)在内的文件或文件目录的路径

我们File类在创建时,常用的的构造方法有以下三种:

第一种是直接输入对应的字符串来表示文件的位置

@Test
    public void test1(){
        //构造器一
       File file1=new File("hello.txt"); //相对于当前module
       File file2=new File("D:\\Git\\java\\JavaSenior\\day_05\\he.txt"); //绝对路径
       System.out.println(file1);
       System.out.println(file2);
    }

第二种是使用字符串来表示文件目录

 //构造器二
        File file3=new File("D:\\Git\\java","JavaSenior");//文件目录
        System.out.println(file3);

第三种是在某一文件目录下的某一文件

//构造器三
        File file4=new File(file3,"hi.txt"); //相当于在JavaSenior下面的一个文件
        System.out.println(file4);

1.3 File类的常用方法

 /*
    适用于文件目录:
    public String[] list():获取指定目录下的所有文件或者文件目录的名称数组
    public File[] listFiles():获取指定目录下的所有文件或者文件目录的File数组
      */
    @Test
    public void test2(){
        File file1=new File("hello.txt");
        File file2=new File("D:\\io\\hi.txt");
        System.out.println(file1.getAbsolutePath());//获取绝对路径
        System.out.println(file1.getPath());  //获取路径
        System.out.println(file1.getName()); //获取名字
        System.out.println(file1.getParent()); //获取上层文件目录,若无,返回null
        System.out.println(file1.length()); //获取文件长度(字节数),不能获取目录的长度
        System.out.println(file1.lastModified()); //获取最后一次的修改时间,返回值为毫秒数
}

public boolean isDirectory():判断是否是文件目录
public boolean isFile():判断是否是文件
public boolean exists():判断是否存在
public boolean canRead():判断是否可读
public boolean canWrite():判断是否可写
public boolean isHidden():判断是否隐藏


 
    创建硬盘中对应的文件或文件目录:
    public boolean creatNewFile():创建文件。若文件存在,则不创建,返回false
    public boolean mkdir():创建文件目录.如果目录存在,则不创建
    public boolean mkdirs():创建文件目录,如果上层文件目录不存在,一并创建
    删除磁盘中的文件或文件目录
    public boolean delete():删除文件或文件夹
    注:Java中的删除不走回收站
  

2 InputStream和OutStream的使用

2.1 InputStream和OutStream的介绍

首先,在java中,按照数据单位的不同,可以分为字节流以及字符流,若是按照流向的不同,可以分为输入流和输出流,其中InputStream就是属于字节输入流,而OutStream就属于字节输出流

2.2 InputStream和OutStream的使用

首先InputStream是一个抽象基类,我们常常使用InputStream的实现类FileInpustream类来进行实例化,OutStream我们也常常使用FileOutputStream进行实例化,其基本使用步骤可以分为

(以下以InputStream为例)

1.造文件

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

2.造流

 FileInputStream fs=new FileInputStream(file);

3.读数据

 byte[] buffer = new byte[5];
            int len; //记录每次读取的字节个数
            while ((len = fs.read(buffer)) != -1)
            {
                String str=new String(buffer,0,len);
                System.out.print(str);
            }

注:read操作一次会读取文件中的一个字节,但读取到空的时候会返回-1

4.关闭资源

 if(fs!=null) {
                    fs.close();
}

为了保证流资源一定能够被关闭,我们常常使用try-catch-finally语句来进行流的操作

同时要记得处理文件操作时出现的异常,整体代码如下:

 public void test() {
        FileInputStream fs=null;
        try {
            //1.造文件
            File file = new File("hello.txt");
            //2.造流
            fs = new FileInputStream(file);
            //3.读数据
            byte[] buffer = new byte[5];
            int len; //记录每次读取的字节个数
            while ((len = fs.read(buffer)) != -1)
            {
                String str=new String(buffer,0,len);
                System.out.print(str);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            //4.关闭资源
            try {
                if(fs!=null) {
                    fs.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

Java中,inputstreamoutputstream是常用于文件操作的Inputstream是用来读取文件数据的,Outputstream则是用来写入文件数据的。File则是用来表示文件或目录的抽象表示。 要实现inputstreamoutputstreamfile间的互转,需要使用Java IO中的一些方法。其中,FileInputStreamFileOutputStream用于将文件与inputstreamoutputstream进行互转换。FileReader和FileWriter用于将字符数据与inputstreamoutputstream进行互转换。另外,ByteArrayInputStream和ByteArrayOutputStream用于在内存中进行数据流操作。 以FileInputStreamFileOutputStream为例,可以通过以下步骤实现inputstreamfileoutputstream间的转换: 1.创建一个FileInputStream对象,将要读取的文件传递给构造函数。 2.通过read()方法读取文件中的数据。 3.创建一个FileOutputStream对象,将要写入的文件传递给构造函数。 4.通过write()方法将读取到的数据写入到输出流中。 以下是代码示例: ``` import java.io.*; public class FileOperation { public static void main(String args[]) { try { //创建一个输入流 FileInputStream in = new FileInputStream("input.txt"); // 读取第一个字节 int c = in.read(); while(c != -1) { System.out.print((char)c); //读取下一个字节 c = in.read(); } //关闭输入流 in.close(); //创建输出流 FileOutputStream out =new FileOutputStream("output.txt"); //写入数据 String str = "Hello Java Programming!"; byte[] bytes = str.getBytes(); out.write(bytes); //关闭输出流 out.close(); } catch (IOException e) { System.out.println("IOException"); } } } ``` 在上面的示例中,程序首先通过FileInputStream读取了一个文件的内容,然后通过FileOutputStream将读取到的内容写入到了另一个文件中。 总之,通过Java IO的各种操作,可以很方便地实现inputstreamoutputstreamfile间的互转。这些方法在读写文件、网络编程等方面都有广泛应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值