文件操作和IO——File类的使用与InputStream,OutputStream

1.File类

1.File类的实例化

File需要实例化,参数写入指定的文件位置
File file = new File("./2391641173/FileRecv");

File类的方法也有很多。
返回file对象的父目录文件路径->file.getParent()
返回file对象的纯文件名称->file.getName()
返回file对象的文件路径->file.getPath()
返回file对象的绝对路径->file.getAbsolutePath()
返回file对象修饰过的绝对路径->file.getCanonicalPath()

import java.io.File;
import java.io.IOException;

public class Demo1 {
    public static void main(String[] args) throws IOException {
        File file = new File("./2391641173/FileRecv");
        System.out.println(file.getParent());//返回f对象的父目录文件路径
        System.out.println(file.getName());//返回f对象的纯文件名称
        System.out.println(file.getPath());//返回f对象的文件路径
        System.out.println(file.getAbsolutePath());//返回f对象的绝对路径
        System.out.println(file.getCanonicalPath());//返回f对象修饰过的绝对路径
    }
}

2.File类的文件判断

判断文件是否存在->f.exists()
判断文件是否为目录->f.isDirectory()
判断是否为文件->f.isFile()
返回类型为boolean
如果不存在指定的文件
那么就创建一个文件-> f.createNewFile()
具体代码为:

import java.io.File;
import java.io.IOException;

public class Demo2 {
    public static void main(String[] args) throws IOException {
        File f = new File("./test.txt");
        //判断文件是否存在
        System.out.println(f.exists());
        //判断文件是否为目录
        System.out.println(f.isDirectory());
        //判断是否为文件
        System.out.println(f.isFile());

        //创建文件
        f.createNewFile();
        System.out.println("============");
        //判断文件是否存在
        System.out.println(f.exists());
        //判断文件是否为目录
        System.out.println(f.isDirectory());
        //判断是否为文件
        System.out.println(f.isFile());
    }
}

3.文件的删除

f.delete();

import java.io.File;

public class Demo3 {

    public static void main(String[] args) {
        File f = new File("./test.txt");
        f.delete();
    }
}

4.创建文件目录

f.mkdir() 创建一个单层目录
f.mkdirs() 创建一个多层目录

具体代码为:

import java.io.File;

//创建目录
public class Demo4 {

    public static void main(String[] args) {
        File f = new File("./testDir");
        f.mkdir();//创建单层目录

        File f1 = new File("./demoDir/aaa/bbb");
        f1.mkdirs();//创建多层目录
    }
}

5.文件的重命名

需要实例化两个File类 一个为srcFile 作为原名 一个为destFile作为新名字 ,使用srcFile.renameTo(destFlie)

import java.io.File;

//文件重命名
public class Demo5 {
    public static void main(String[] args) {
        File srcF = new File("./demo.text");//源头
        File destF = new File("./demo1.text");//去处

        srcF.renameTo(destF);//重命名
    }
}

6.显示目录下的全部文件名

使用f.list()
代码如下:

import java.io.File;
import java.util.Arrays;

public class Demo6 {
    public static void main(String[] args) {
        File f = new File("./test.txt");
        String[] results = f.list();//目录
        System.out.println(Arrays.toString(results));//显示目录下的所有文件名
    }

}

2.InputStream与OutputStream

1.InputStream

InputStream是读一个文件,使用字节流来读文件,并且这个类是一个抽象类,所有不能实例化,只能实例化已经实现了这个类的类(FileInputStream)
使用.read()来读取一个字节,如果为-1说明文件中的内容已经读完了。

读文件的时候有三个操作,1.打开文件 2.读文件 3.关闭文件

import java.io.*;

//读一个文件 用字节流读文件  打开 读文件 关闭
public class Demo7 {
    public static void main(String[] args) throws IOException {
        //打开文件
        InputStream inputStream = new FileInputStream("./test.txt");//InputStream是抽象类 不能实例化
        while(true){
            int tmp = inputStream.read();//读文件
            if(tmp == -1){
                //为-1说明读完了 读文件读出的是字节码
                break;
            }
            System.out.println(tmp);
        }
    inputStream.close();//文件关闭
    }
}

2. OutputStream

OutputStream是写一个文件,使用字节流来写文件,并且这个类是一个抽象类,所有不能实例化,只能实例化已经实现了这个类的类(FileOutputStream)
使用.writer来写一个字节的文件

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

//写文件 字节流写文件
public class Demo8 {
    public static void main(String[] args) throws IOException {
        OutputStream outputStream = new FileOutputStream("./test.txt");
        //使用outputStream写文件的时候 打开文件成功后 会把文件原来的内容清空
        outputStream.write(97);
        outputStream.write(98);
        outputStream.write(99);
        outputStream.close();
    }
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

keild

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

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

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

打赏作者

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

抵扣说明:

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

余额充值