Java:如果文件不存在,我无法为文件是不是存在创建条件。为啥?

Posted

技术标签:

【中文标题】Java:如果文件不存在,我无法为文件是不是存在创建条件。为啥?【英文标题】:Java: If file doesn´t exist I can´t create condition for file exist or not. Why?Java:如果文件不存在,我无法为文件是否存在创建条件。为什么? 【发布时间】:2020-05-20 14:41:22 【问题描述】:

您好,这是一个比较文件夹是否存在的简单代码。

import java.io.*;

public class myfile 
    public static void main(String args[])
    

        // Get the file
        File f = new File("file_f.txt");

        // Check if the specified file
        // Exists or not
        if (file_f.exists())
            System.out.println("Exists");
        else
            System.out.println("Does not Exists");
            System.out.println("I would like to run this possibility");
    

但我需要在文件夹不存在时执行代码。但是如果我删除创建文件夹,它会得到一个错误...... (在我的代码中,我需要检查文件夹是否存在,如果不存在,则代码已经开始执行。)那么如果某些情况下文件夹不存在,我该怎么办?

现在我删除了创建文件,因为我想运行 else 部分...

import java.io.*;

public class myfile 
    public static void main(String args[])
    

        // Get the file

        //File f = new File("friends.txt");



        // Check if the specified file
        // Exists or not
        if (file_f.exists())
            System.out.println("Exists");
        else
            System.out.println("Does not Exists");
            System.out.println("I would like to run this possibility");
    


但是

错误:(14, 13) java: 找不到符号 符号:变量 f 位置:类我的文件

如果在某些情况下该文件夹不存在,我该怎么办? 谢谢

【问题讨论】:

当您说文件夹时,您的意思是文件 file_f 或此代码中未定义的其他文件对象吗?此外,您的代码 sn-ps 引用 file_f 但该对象未在任何地方定义。当您在第一个 sn-p 中声明 File f 时,应该是 File file_f 吗? 无法解释问题 除了主要问题之外,Java 不像 Python 那样缩进定义范围。在 Java 范围内由通过 .. 括号创建的代码块描述。所以你的else 应该是else /*those printing statements*/ 【参考方案1】:

此行不会在磁盘(或您正在使用的任何存储设备)上创建文件。

File f = new File("friends.txt");

它只是在 JVM 中创建一个对象,您可以使用它来操作文件。要真正从头开始创建文件,您需要在该文件周围创建一种 OutputStream 并在其中写入一些内容,然后关闭流。

【讨论】:

我怎么知道这样创建的文件是否存在?不在磁盘上,只是在应用程序中的一个txt。 你可以调用 f.exists() @david751 但是f 和光盘上的实际文件是两个不同的东西。 f 是一个 File 类型的变量,它表示文件的可能位置的信息,它不强制文件或目录的存在。您可以写new File("h:\\foo\\bar.txt"),这不会强制创建H: 驱动器/分区,或者即使这样的驱动器已经存在,它也不会强制在指定路径中创建文件。换句话说,没有理由从您的代码中删除File f = new File("friends.txt");,这意味着您可以调用f.exist() @david751 如果您想知道其他人是否在项目中使用文件名friends.txt,那么您需要使用文本搜索。 File.exists() 检查文件系统上是否存在具有给定名称的文件,而不是其他人在 Java 项目中使用相同的文件名。【参考方案2】:

此代码将修复您提到的编译错误,并在文件存在和不存在时演示功能

import java.io.*;

public class FileTester 
    private static void testFile(File f)
         // Check if the specified file
        // Exists or not
        if (f.exists())
            System.out.println(f.getAbsolutePath() + " exists");
        else
            System.out.println(f.getAbsolutePath() + " does not exist");        
    

    public static void main(String args[])
    
        // assuming friends.txt already exists in current directory, this
        // will print "friends.txt exists"
        testFile(new File("friends.txt"));
        //assuming otherFile.txt does not already exist in current directory
        // this will print "otherFile.txt does not exist"
        testFile(new File("otherFile.txt"));

    

【讨论】:

以上是关于Java:如果文件不存在,我无法为文件是不是存在创建条件。为啥?的主要内容,如果未能解决你的问题,请参考以下文章

JAVA:判断一个文件是不是存在,如果不存在则创建它

java 如果我有一个路径比如 E:/123 在这个路径表示的文件不存在时 如何判断是不是是文件或

检查 Yii 中是不是存在文件

创建一种方法来检查Java中的通用HashMap中是不是存在值? [复制]

C语言,判断一个文件是不是存在

如何验证文件夹是不是已存在