【问题标题】:Why does the separator get changed by Path parentPath = Paths.get(strPath)?为什么分隔符会被 Path parentPath = Paths.get(strPath) 改变?
【发布时间】:2019-11-06 13:10:54
【问题描述】:

在我的 Windows 应用程序中,我想通过 FTP 使用 SimpleFileVisitor<Path> 删除服务器上的目录结构。它因“找不到文件”而失败,因为在下面的代码中,分隔符被更改为反斜杠。显然,服务器希望它是正斜杠。我怎样才能让它保持为正斜杠?

public class FTPTest {
static String server ;
static int port ;
static String user ;
static String pass; 
static FTPClient theFtpClient;
public FTPTest(){
    server = "nx.dnslinks.net";
    port = 21;
    user = "xxxx";
    pass = "#xxxxx"; 
    theFtpClient = new FTPClient();
}
static void deleteDirectoryWalkTree(Path path) throws IOException {
FileVisitor visitor = new SimpleFileVisitor<Path>() {
    @Override
    public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
      Files.delete(file);
      return FileVisitResult.CONTINUE;
    }
    @Override
    public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException {
      Files.delete(file);
      return FileVisitResult.CONTINUE;
    }
    @Override
    public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
      if (exc != null) {
        throw exc;
      }
      Files.delete(dir);
      return FileVisitResult.CONTINUE;
    }
};
    Files.walkFileTree(path, visitor);
}    
public static void main(String[] args) {
    FTPTest     theFTPTest = new FTPTest();
    Path Path = Paths.get("/httpdocs/manual-uploads/TestingFTPUtil/SubDir_1/SubDir_2");
    try {
        theFTPTest.deleteDirectoryWalkTree(Path);
    } catch (IOException ex) {
        Logger.getLogger(FTPTest.class.getName()).log(Level.SEVERE, null, ex);
    }
}

}

【问题讨论】:

  • 我没有看到,您的编辑对您的问题有什么改变,也没有看到我的答案的相关性。

标签: java path ftp nio


【解决方案1】:

Path/Paths 类用于将您的代码与本地操作系统的路径语法隔离开来。

虽然您想使用 远程 FTP 系统的路径,但它可能(确实)使用不同的语法。并且主要是相同的语法,无论您的代码碰巧在哪个本地操作系统上运行。

因此,您不应将 Path/Paths 类用于 FTP 路径。

【讨论】:

  • 嗯,这很有趣。猜猜我不能使用 SimpleFileVisitor,或者我偶然发现的替代删除目录结构示例。有什么建议吗?
  • 如果您的实际问题是“如何删除 FTP 服务器上的目录结构”,请将其作为问题发布。我相信我已经回答了您当前的问题(尽管它可能对您的实际问题有所帮助)。
  • 在这两点上都对,马丁。谢谢。我找到了这个,它有效! codejava.net/java-se/ftp/…
猜你喜欢
  • 2010-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-06
  • 2015-04-26
相关资源
最近更新 更多