Java中IO流中File类、字节流和字符流相关方法

一、File类

1.使用递归,输出某个文件夹下所有的文件,以及子文件夹中所以的文件。

代码如下(示例):

package com;


import org.junit.Test;

import java.io.File;

public class Test3 {
    
    
    @Test
    public void test3(){
    
    
        File f= new File("D:\\新建文件夹\\day20-IO\\笔记");
        File[] files=f.listFiles();
        show(files);
    }
    public void show(File[] files){
    
    
        for (File file :files){
    
    
            if (file.isDirectory()){
    
    
                System.out.println(file.getName()+": 是一个文件夹");
                File[] imgs = file.listFiles();
                show(imgs);
            }else {
    
    
                System.out.println(file.getName()+":是一个文件");
            }
        }
    }
}

在这里插入图片描述

二、字节流

1.字节输入流(一次读一个字节)

public static void main(String[] args)  throws Exception {
    
    
        //绝对路径
        File f1 = new File("D:\\java培训\\java-day20\\src\\a.txt");
        System.out.println(f1.exists());
        //相对路径
        File f2 = new File("src\\a.txt");
        System.out.println(f2.exists());
        //1.构建一条通往文件f2多的管道--流对象
        FileInputStream fis = new FileInputStream(f2);
        //2.调用方法
        int l=fis.available();
        for (int i = 0; i < l; i++) {
    
    
            System.out.println(fis.read());
        }
        //关闭资源
        fis.close();
    }

在这里插入图片描述

2.字节输入流(一次读多个字节)

public static void main(String[] args)  throws Exception {
    
    
		 //相对路径
        File f1 = new File("src\\a.txt");
        System.out.println(f1.length());
        //1.构建一条通向文件f1的管道--流对象
        FileInputStream fis = new FileInputStream(f1);
        //2.调用方法--根据文件的字节长度,去构建一个相同长度的数组
        byte[] bs = new byte[fis.available()];
        //读取到文件中的字节数据,存入数组中,返回读到的实际字节个数
        int r=fis.read(bs);
        int r2=fis.read(bs);
        System.out.println(Arrays.toString(bs));
        System.out.println(r);
        System.out.println(r2);
        //关闭资源
        fis.close();
 }

在这里插入图片描述

3.边读边写三种方式

public static void main(String[] args)  throws Exception {
    
    
 FileInputStream fis = new FileInputStream("src\\a.txt");
        FileOutputStream os = new FileOutputStream("src\\b.txt");
        //方式1:
        while (fis.available()>0){
    
    
            os.write(fis.read());
        }
        //方式2:
        int l=fis.available();
        for (int i = 0; i < l; i++) {
    
    
            os.write(fis.read());
        }
        //方式3:
        int r=-1;
        while ((r=fis.read())!=-1){
    
    
            os.write(r);
        }
}

三、字符流

1.字符输入流

public static void main(String[] args)  throws Exception {
    
    
        FileReader fr = new FileReader("src\\1.txt");
        char[] c=new char[6];
        //方式一
        while (fr.read(c)!=-1){
    
    
            System.out.println(c);
        }
        //方式二
        while (fr.read(c,0,6)!=-1){
    
    
            System.out.println(c);
        }
        //方式三
        for (int i = 0; i < 4; i++) {
    
    
            for (int j = 0; j < 6; j++) {
    
    
                System.out.print((char) fr.read());
            }
            System.out.println();
        }
}

2.字符输出流

public static void main(String[] args)  throws Exception {
    
    
        FileWriter fw = new FileWriter("src\\test1.txt");
        String str="昨夜雨疏风骤,浓睡不消残酒。试问卷帘人,却道海棠依旧。知否,知否?应是绿肥红瘦。";
        fw.write(str);
        fw.flush();
        fw.close();
}

总结

以上就是IO流中File类、字节流和字符流的方法相关的内容,主要讲解的是他们的用法以及一些方式。

猜你喜欢

转载自blog.csdn.net/StruggleBamboo/article/details/111997760