.getAbsoultePath打印ProjectPath而不是SystemPath?

时间:2015-09-30 15:16:59

标签: java file path

file.getAbsolutePath()方法存在一些问题,我也尝试了f.getcanonicalPath();方法。

而不是

  

C:/ Documents and Settings

打印

  

C:\ Users \ me \ Documents \ NetBeansProjects \ fileC \ Documents and Settings

你能否解释一下应如何改变?

谢谢

    f = new File(C://);
    fs = f.list();

    for(String fsv : fs) {
     f = new File(fsv);
     String ap = f.getAbsolutePath();
     System.out.println(ap);

2 个答案:

答案 0 :(得分:1)

fs中只有C:中文件的名称,如果您将文件名提供给文件对象,则将名称添加到当前工作目录中。 您可以更改代码:

    File f = new File("C:/");
    File[] fs = f.listFiles();
    for (File fsv : fs) {
        String ap = fsv.getAbsolutePath();
        System.out.println(ap);
    }

我希望它有所帮助。

答案 1 :(得分:1)

它花了一点时间,我仍然试图了解更多,但我发现了一些可能也有用的东西。

除了accessDeniedException之外,它还可以工作。在java8中,代码似乎更短。

如果有人对第一个代码有答案,那么它也会很棒。

由于

  Path p = Paths.get("C://");
FileVisitor<Path> fv = new SimpleFileVisitor<Path>() {
  public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
      throws IOException {
    System.out.println(file);
    return FileVisitResult.CONTINUE;
  }
};

try {
  Files.walkFileTree(p, fv);
} catch (IOException e) {
  e.printStackTrace();
}

或java 8

try {
Files.walk(Paths.get("C://")).forEach(System.out::println);

} catch(IOException e){       e.printStackTrace(); }