JAVA笔记7.26

File类

文件和目录路径名的抽象表示形式。
即,Java中把文件或者目录(文件夹)都封装成File对象。
对计算机来说,文件就是指定盘符下的文件或文件夹

构造方法:

File 变量名=New File(Sting Pathname);
//pathname:文件路径

Windows下的路径分隔符: \ ;Linux小的路径分隔符:/
可以使用Flie.separator分隔,它会在不同系统输出相应的路径分隔符

方法:

方法作用返回值
createNewFile()如果文件不存在就创建一个,若不存在就不创建且返回falseBoolean
mkdir()创建文件夹(只能创建单层文件夹),若文件夹存在则不创建且返回falseBoolean
mkdirs()创建文件夹(能创建多层文件夹),文件夹存在则不创建且返回falseBoolean
isFile()判断是否是文件Boolean
isDirectory()判断是否是文件夹Boolean
exists()判断文件存在Boolean
length()判断文件大小(字节)Boolean
list()获取某个文件夹下面的文件,返回字符串数组,数组内容就是文件名String[]

以上方法使用时需要抛出异常

例:

    public static void main(String[] args) throws IOException {
        File file = new File("D:\\Mgame\\idea2023.zip");
        boolean b =file.createNewFile();
        System.out.println(b);

        File file1 = new File("D:\\Mgame\\idea");
        boolean mkdir = file1.mkdir();
        System.out.println(mkdir);

        File file2 = new File("D:\\Mgame\\66\\666");
        boolean mkdirs = file2.mkdirs();
        System.out.println(mkdirs);

        System.out.println(file.isFile());
        System.out.println(file1.isDirectory());

        boolean mb =file.exists();

        System.out.println(file.length()/1024/1024);

        System.out.println(File.separator);

        File file3 = new File("D:\\Mgame\\idea2023");
        String[] list = file3.list();
        System.out.println(Arrays.toString(list));
    }

IO流

字节输出/输入流

  1. 字节流和字符流的基本操作是相同的,但是要想操作媒体流就需要用到字节流。
  2. 字节流因为操作的是字节,所以可以用来操作媒体文件。(媒体文件也是以字节存储的)
  3. 读写字节流:InputStream 输入流(读)和OutputStream 输出流(写)
  • 字节输入流FileInputStream
  • 字节输出流FileOutputStream;
  • 入 出:相对于内存来说的
  • 输入流:读取数据到内存(从硬盘到内存)
  • 输出流:写数据到文件(从内存到硬盘)

构造方法
字节输入流FileInputStream

FileInputStream fis = new FileInputStream(要读取文件路径)

方法:

方法名作用返回值
read()读取一个字节,每次读完以后下次就会读取下一个字节int
read(字节数组)每次都数值.length()个字节,读出来就存入数组,数组内放的就是读取到的数据,返回值是一共读了多少个字节,如果读取完毕了返回 -1int

字节输出流FileOutputStream

FileOutputStream fos = new FileOutputStream(要写入文件路径);覆盖型
FileOutputStream fos = new FileOutputStream(要写入文件路径,true);追加型

方法:

方法作用
write(内容)将内容写入到文件

例:
文件拷贝

    public static void main(String[] args) {
        FileOutputStream fos = null;
        FileInputStream fis = null;
        long star = System.currentTimeMillis();
        try {
            fos= new FileOutputStream("D:\\Mgame\\idea.zip");
            fis  = new FileInputStream("D:\\Mgame\\idea2023.zip");
            byte[] bytes = new byte[1024 * 1024*2];
            int len = fis.read();
            System.out.println(len);
            while (len!=-1){
                fos.write(bytes,0,len);
                len=fis.read(bytes);
            }
            long end = System.currentTimeMillis();
            System.out.println(end-star);
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        } finally {
            if (fos!=null){
                try {
                    fos.close();
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
            if (fis!=null){
                try {
                    fis.close();
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
        }
    }

字符流输入\输出

1.字符流是可以直接读写字符的IO流,字符流读取字符,就要先读取到字节数据,然后转为字符.;如果要写出字符,需要把字符转为字节再写出。
2.读写字节流:Reader输入流(读)和Writer 输出流(写)

方法
字符输入:

FileReader reader=new FileReader(路径);
方法名作用返回值
read()读取一个字节,每次读完以后下次就会读取下一个字节int
read(字节数组)每次都数值.length()个字节,读出来就存入数组,数组内放的就是读取到的数据,返回值是一共读了多少个字节,如果读取完毕了返回 -1int

字符输出:

FileWriter writer=new FileWriter(路径);覆盖
FileWriter writer=new FileWriter(路径,true);追加
方法作用
write(内容)将内容写入到文件
flush()写入之后刷新文件

例:

    public static void main(String[] args) {
        try {
            FileReader reader = new FileReader("d:\\laoma.txt");
            char[] chars = new char[1024];
            int read = reader.read(chars);
            System.out.println(read);
            String s = new String(chars, 0, read);
            System.out.println(s);
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值