Java绝对文件路径未提供所需的路径

时间:2014-06-26 17:51:50

标签: java file path directory absolute-path

我在/ home / vamshi / Documents / Eval / Files / standard6 / Maths /创建了一个文件夹'Maths',我已经放了一些文件。 它们是hello.txt,world.txt

现在,我已经使用这个java代码遍历目录

    System.out.println("DIRECTORY PATH IS :"+path);


    File f = new File(path);
    System.out.println("DIRECTORY ABS PATH IS :"+f.getAbsolutePath());
    if( f.isDirectory() )
    {
        String[] subNote = f.list();
        for(String filename : subNote)
        {
                File tempFile = new File(filename);
                System.out.println("FILE PATH:"+tempFile.getAbsolutePath());

        }
    }
    else
    {
        System.out.println("Its not a directory!");

    }

输出是:

目录路径:/ home / vamshi / Documents / Eval / Files / standard6 / Maths /

DIRECTORY ABS PATH是:/ home / vamshi / Documents / Eval / Files / standard6 / Maths

文件路径:/home/vamshi/workspaceNew/Server/GUI_Version_Netbeans/server/hello.txt

文件路径:/home/vamshi/workspaceNew/Server/GUI_Version_Netbeans/server/world.txt

这怎么可能? 为什么Maths目录中的文件具有Netbeans项目的绝对路径?

2 个答案:

答案 0 :(得分:2)

仅使用文件名创建新文件时,会在默认目录中创建该文件。在这种情况下,文件被放入“/ home / vamshi / workspaceNew / Server / GUI_Version_Netbeans / server /”

而不只是给它文件名:

File tempFile = new File(filename);

为其指定所需的路径和文件名,如下所示:

File tempFile = new File(path + filename);

这应该创建文件并将其放入所需的位置。

答案 1 :(得分:2)

File#list() javadoc

  

每个字符串都是文件名而不是完整路径。

换句话说,对于目录File maths

/home/vamshi/Documents/Eval/Files/standard6/Maths/

目录包含

abc.txt (file)
123.json (file)
/home (directory)

然后这段代码

maths.list();

将返回包含<{p}}的String[]

["abc.txt", "123.json", "home"]

这些名称与上面的File无关。从这些File名称创建新的String对象时,它们的绝对路径将相对于当前工作目录进行解析。

在Java 8中,执行

    Stream<Path> paths = Files.list(Paths.get(".").toAbsolutePath());

获取包含目录中文件的所有绝对路径的Stream<Path>