处理文件时出现Java I/O问题

Num*_*Ten -2 java io file

我正在学习Java I/O,当我编译这段代码时:

    import java.io.File;   
    public class Main {public static void main(String[] args){
            //Creation of the File object
            File f = new File("test.txt");
            System.out.println("File absolute path : " + f.getAbsolutePath());
            System.out.println("File name : " + f.getName());
            System.out.println("Does it exist ? " + f.exists());
            System.out.println("Is it a directory? " + f.isDirectory());
            System.out.println("Is it a file ? " + f.isFile());
}
Run Code Online (Sandbox Code Playgroud)

问题是f.exists()f.isFile()返回false

这怎么可能呢 ?

Per*_*ror 9

    File f = new File("test.txt");
Run Code Online (Sandbox Code Playgroud)

以上行不会在磁盘上创建物理文件.它只创建一个名为'test.txt'的文件对象,因此File#exits()返回false.

您需要以多种方式创建实际的物理文件.

使用文件

file.createNewFile()
Run Code Online (Sandbox Code Playgroud)

使用FileWriter

FileWriter writer = new FileWriter(f);
Run Code Online (Sandbox Code Playgroud)

PS:同样适用于File#isFile()也返回false.

  • @ Kafil10:你看到"createNewFile"这个词了吗? (2认同)

Mar*_*nik 5

File不是文件 - 它只是本机文件系统资源的描述符,可能存在也可能不存在.例如,你可以做到new File(path).createNewFile().