java中IO流详解+配代码示例

本文详细讲解了Java中的File类操作,包括绝对路径和相对路径,以及如何创建、读写、遍历文件和目录。同时介绍了字节流(如FileInputStream)和字符流(如FileInputStream)的使用实例,以及如何复制文件内容。
摘要由CSDN通过智能技术生成

        IO流是数据传输的通道,io流根据操作数据的类型又可以分为字符流和字节流。以内存为参照物,读取内存上的内容叫做输入流,往内存上写内容叫做输出流。

File类:

        文件和目录路径的抽象表示形式。

        java把电脑中的文件和文件夹(目录)封装为一个File类,我们可以使用File类对文件和文件夹进行操作。

路径:

        路径分为绝对路径和相对路径。绝对路径是以盘符(C:  D: ……)开始的路径。

        而相对路径是一个简化的路径。相对指的是相对于当前项目的根目录。

构造方法:

        1、File(String pathname)通过将给定路径名字字符串转换为抽象路径来创建一个新的File实例。

        2、File(String parent,String child):根据parent路径字符串和child路径字符串创建一个新的File实例。

        3、File(File parent, String child):根据parent的抽象路径和child路径字符串创建一个新的File实例。

常用方法:

        public String getAbsolutePath():获取绝对路径。

        public String getPath():获取对象的相对路径。

        public long length():返回此File表示的文件长度。

        public boolean exists():File是否存在

        public boolean isDirectory():判断对象是否是目录

        public boolean isFile():此File表示的是否是是文件。

        public boolean creatNewFile():当且仅当具有该名称的文件夹尚不存在时创建一个新的空文件。

        public boolean mkdirs():既可以创建单级文件夹也可以创建多级文件夹。

        public boolean delete():删除当前文件或目录

        public String[ ] list():返回一个String数组,表示该File目录中的所有子文件。

        public File[ ] listFiles():返回一个File数组,表示该文件夹中的所有文件。

综合训练:遍历指定文件中的所有目录和文件:

public class PrintAllFiles {
    public static void lookup(String path){
        File f = new File(path);
        if(!f.exists()){
            System.out.println("路径不存在");
            return;
        }
        System.out.println(path);
        if(f.isFile()){
            return;
        }
        File[] file = f.listFiles();
        if(file == null||file.length==0)return;
        for (File fl : file) {
            lookup(fl.getPath());
        }
    }

    public static void main(String[] args) {
        lookup("D:\\QQ\\03-Java高级API\\06-输入和输出处理(一)");
        File f = new File("jj");
    }


}

字节输入流:

        父类:InptuStream

        常用子类:FileInputStream。构造方法:FileInputStream(File f),FileInputSteam(String fileName)

        常用方法:

        read():读取文件的第一个字节,返回这个字节的值,如果到到达文末,那么返回-1。
        read(byte[ ] b):每次至多读取一个数组的长度。

        available()返回值是还没有被读取的剩余字节数。

        close():关闭流并释放资源。

假设现在项目根目录下有一个“a.txt”文件,内容是“I am a Superman!”

字节流读取:

        FileInputStream fis = new FileInputStream("a.txt");
        int i;
        while ((i = fis.read()) != -1){
            System.out.print((char)i);//I am a Superman!
        }
        fis.close();

字符流读取:

        FileInputStream fis = new FileInputStream("a.txt");
        byte[] b = new byte[fis.available()];
        fis.read(b);
        System.out.println(Arrays.toString(b));
        fis.close();

结果:

 输入输入流训练,将指定文件的复制到另一个文件中:

public class Exercise2 {
    public static void writeFile(String path,String s) throws IOException {
        FileOutputStream fos = new FileOutputStream(path);
        byte[] b = s.getBytes();
        fos.write(b);
        fos.close();
    }
    public static String readFile(File path) throws IOException{
        FileInputStream fis = new FileInputStream(path);
        byte[] b = new byte[fis.available()];
        fis.read(b);
        fis.close();
        return new String(b);
    }

    public static void main(String[] args) throws IOException {
        File f = new File("D:/我的青春谁做主");
        f.getParentFile().mkdirs();
        if(!f.exists()){
            f.createNewFile();
        }
        //往青春谁做主中写入内容。
        String text= "你的青春我做主,You belong to me!";
        writeFile(f.getAbsolutePath(),text);
        String s = readFile(f);

        File f1 = new File("C:/myFile/my Prime.txt");
        f1.getParentFile().mkdirs();
        if(!f1.exists())f1.createNewFile();

        writeFile(f1.getAbsolutePath(),s);

    }
}

        

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值