我在/ 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项目的绝对路径?
答案 0 :(得分:2)
仅使用文件名创建新文件时,会在默认目录中创建该文件。在这种情况下,文件被放入“/ home / vamshi / workspaceNew / Server / GUI_Version_Netbeans / server /”
而不只是给它文件名:
File tempFile = new File(filename);
为其指定所需的路径和文件名,如下所示:
File tempFile = new File(path + filename);
这应该创建文件并将其放入所需的位置。
答案 1 :(得分:2)
每个字符串都是文件名而不是完整路径。
换句话说,对于目录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>
。