File

207 阅读2分钟

1. I/O流

概念:

  • 大多数的应用程序(项目)都需要与外部设备进行数据交换,最常见的外部设备有磁盘、硬盘和网络。
  • I/O(Input/Output)就是指应用程序(项目)和这些设备之间的数据交换。
  • java中有很多负责I/O数据交换的类,都在 java.io 包中。
  • java.io.File 类是I/O包中唯一代表硬盘文件本身的类,通过它可以对文件进行创建,删除,重命名,设置读写权限等操作。
    • 构造器:new File(String filename),java支持 UNIXWINDOWS/DOS 约定的路径分隔符 /\\
    • boolean exists():判断文件/目录是否存在。
    • boolean mkdir():创建单层目录。
    • boolean mkdirs():创建多层目录。
    • void delete():删除文件/目录,彻底删除,不进回收站,删除文件夹的前提是,文件夹是空文件夹。
    • void deleteOnExit():在JVM终止时删除文件,只有在JVM正常终止时,才会尝试执行删除操作。
    • boolean createNewFile():创建一个文件。
    • String getName():得到文件/目录的名称。
    • String getPath():得到文件/目录的路径。
    • long length():得到文件字节数。
    • boolean canRead():判断文件是否可读(能查看但是不能操作和存储)。
    • boolean canWrite():判断文件是否可写(能写入但是看不见)。
    • boolean isFile():判断文件是否是文件。
    • boolean isDirectory():判断文件是否是目录。
    • boolean renameTo(File file):重命名为新的file实例的名字注意参数中的file实例不要创建出来。
    • boolean equals(File file):判断文件/目录是否是同一个。
    • String getParent():返回父目录的路径名,如果此路径名没有指定父文件夹,则返回null。
    • boolean isHidden():返回文件是否是一个隐藏文件。
    • long lastModified():返回文件最后一次被修改的时间戳,如果该文件不存在,或者发生I/O错误,则返回0L。
    • boolean isAbsolute:返回文件是否是绝对路径(从盘符出发就是绝对路径)。
    • String getAbsolutePath():返回文件的绝对路径。

测试: FileTest.java

public class FileTest {

    private File file;

    @Before
    public void before() throws IOException {
        String pathDirs = "D:\\java\\io";
        File dirs = new File(pathDirs);
        if (!dirs.exists()) {
            System.out.println(dirs.mkdirs() ? "目录创建成功" : "目录创建失败");
        }
        String pathname = pathDirs + "\\build.txt";
        this.file = new File(pathname);
        if (this.file.exists()) {
            System.out.println(this.file.delete() ? "删除成功" : "删除失败");
        }
        System.out.println(this.file.createNewFile() ? "文件创建成功" : "文件创建失败");
    }

    @Test
    public void fileApi() {
        System.out.println("文件名:" + file.getName());
        System.out.println("文件路径:" + file.getPath());
        System.out.println("文件大小:" + file.length());
        System.out.println(file.canRead() ? "可读" : "不可读");
        System.out.println(file.canWrite() ? "可写" : "不可写");
        System.out.println(file.isFile() ? "是文件" : "不是文件");
        System.out.println(file.isDirectory() ? "是目录" : "不是目录");
        File newFile = new File("D:\\java\\io\\build-1.txt");
        System.out.println(file.renameTo(newFile) ? "修改成功" : "修改失败");
        System.out.println(file.equals(newFile) ? "是同一个" : "非同一个");
        System.out.println("父目录:" + file.getParent());
        System.out.println(file.isHidden() ? "隐藏文件" : "非隐藏文件");
        System.out.println("最后修改日期:" + new Date(file.lastModified()));
        System.out.println(file.isAbsolute() ? "是绝对路径" : "不是绝对路径");
        System.out.println("文件绝对路径:" + file.getAbsolutePath());
    }
}