【问题标题】:Why do we have to add forward slash in the file directory to differentiate between directory and files?为什么我们必须在文件目录中添加正斜杠来区分目录和文件?
【发布时间】:2019-01-03 11:35:36
【问题描述】:

for 循环内:

为什么我必须在目录名称后添加正斜杠? 例如:

for(int i = 0; i<s.length; i++){
    File f = new File(dirname + "/" + s[i] ); 
    // Why to add "/" after dirname(i.e directory name)
    if(f.isDirectory()){
        System.out.println(s[i] + " is Directory" );
    }else{
        System.out.println(s[i] + " is File");
    }
}

如果我在dirname 之后删除反斜杠“/”:

File f = new File(dirname + "/" + s[i] ); 

当我删除“/”时:

File f = new File(dirname + s[i] ); 

它不会区分目录和文件。里面的所有文件都会被认为是文件。 添加反斜杠后,就可以了。它将区分目录和文件。这是为什么? 为什么我必须添加“/”。该程序旨在查看文件内部而不添加“/”。

【问题讨论】:

  • 在我们知道sdirname 等变量是什么之前,我们不能说。

标签: java file directory backslash


【解决方案1】:

包含和省略/ 表示文件指向不同的路径。比如"foo/bar""foobar"是不同的路径,会指向文件系统中不同的对象:

Parent directory
+-- foobar     "foobar"
+-- foo
    +-- bar    "foo/bar"

不是目录与文件不同。因此,很可能(我们不知道您的文件系统中有什么),它不是目录,因为它不存在。

你应该先检查if (!f.exists())(或类似的):

if (!f.exists()) System.out.println("Doesn't exist");
else if (f.isDirectory()) ... etc

另外,请注意,无论如何您都不应该添加 / - 使用双参数构造函数:

File f = new File(dirname, s[i] ); 

【讨论】:

  • 感谢您的回答。它真的帮助了我!
【解决方案2】:

斜线符号是file separator。这用于将目录与文件分开。

如果您要构建字符串,文件名将是:

Pictures/my-dog.png

在这里,你会看到有一个名为“Picture”的目录和一个名为“my-dog.png”的文件。

如果您要删除斜线,它将看起来像一个长文件名:

Picturesmy-dog.png

【讨论】:

    猜你喜欢
    • 2018-08-30
    • 2019-09-25
    • 2012-04-13
    • 2020-11-10
    • 1970-01-01
    • 1970-01-01
    • 2016-08-24
    • 1970-01-01
    相关资源
    最近更新 更多