IO基础(File类)

IO基础(File类)

一、什么是文件?

文件简单的可以理解成,在外设硬盘上面保存数据的一种方式
文件一共可以由两部分构成:属性(文件大小,文件名,文件类型等)+内容(就是文件里面放的是什么)

在Java中要进行文件的处理操作是要通过本地操作系统支持的,在这之中如果操作的是同名文件,就可能出现延迟的问题。(开发之中尽可能避免文件重名问题)

二、File文件操作类

绝对路径与相对路径
绝对路径:是指目录下的绝对位置,直接到达目标位置,通常是从盘符开始的路径。完整的描述文件位置的路径就 是绝对路径 。

**相对路径:**相对与某个基准目录的路径 。

1、最常用的构造方法:
public File(String pathname) 创建指定路径文件对象
public File(String parent, String child) 创建指定路径文件对象,但要指明父路径和子路径

2,常用的方法:
在这里插入图片描述

代码如下:

编写文件的基本操作(如果文件不存在则进行创建;存在则删除)

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

public class FileDemo {

    public static void main(String[] args) throws IOException {
        String pathname = "C:\\my_java\\aaa.txt";
        File file = new File(pathname);
        if (file.exists()) { //文件存在,删除      
            file.delete();
            System.out.println("文件" + pathname + "存在,删除之");
        } else { //文件不存在,创建        
            try {
                file.createNewFile(); //有创建失败的风险,需要捕捉异常      
                System.out.println("文件" + pathname + "不存在,创建之");
            } catch (IOException e) { //文件部分异常,常见为IOException  
                System.out.println("文件" + pathname + "创建失败");
                e.printStackTrace();
            }
        }
    }
}

打印文件夹的内容

 //显示文件夹的内容,包含子文件夹的内容
    private static void listSub(String folder) {
        File file = new File(folder);

        File[] files = file.listFiles();
        for (File f : files) {
            System.out.println(f.getAbsolutePath()); //如果f是文件夹,把f这个子文件夹的内容也显示出来if ( f.isDirectory() ){
            listSub(f.getAbsolutePath());//递归调用
        }
    }

实现文件夹的复制(需要借助字节输入输出流)

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * 描述:文件夹的复制
 */
public class Test1 {
    public static void main(String[] args) {
        String yuan = "";//需要填写原文件的绝对路径
        String dest = "";//需要填写目标文件的绝对路径
        copyFile(yuan,dest);
    }

    private static void copyFile(String yuan, String dest) {
        File file = new File(yuan);
        File[] files = file.listFiles();
        for (File f : files) {
            File destFile = new File(dest);
            if (f.isFile()) {
                copyof(destFile,f);
            }else {
                destFile.mkdirs();
                copyFile(f.getAbsolutePath(),destFile.getAbsolutePath());
            }
        }
    }

    private static void copyof(File destFile, File f) {
        try (FileInputStream fis = new FileInputStream(f);
             FileOutputStream fos = new FileOutputStream(destFile)) {
            byte[] bytes = new byte[1024];
            int len = fis.read(bytes);
            while (len != -1) {
                fos.write(bytes);
                len = fis.read(bytes);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

发布了69 篇原创文章 · 获赞 160 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/lzh_99999/article/details/104576996