Java 为什么分隔符会被Path parentPath=Path.get(strPath)更改?

Java 为什么分隔符会被Path parentPath=Path.get(strPath)更改?,java,path,ftp,nio,Java,Path,Ftp,Nio,在我的Windows应用程序中,我想使用SimpleFileVisitor删除FTP服务器上的目录结构。由于在下面的代码中,分隔符被更改为反斜杠,因此“未找到文件”失败。显然,服务器希望它是正斜杠。我怎样才能使它保持正斜杠 public class FTPTest { static String server ; static int port ; static String user ; static String pass; static FTPClient theFtpClient; p

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

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);
    }
}
公共类FTPTest{
静态字符串服务器;
静态int端口;
静态字符串用户;
静态串通;
静态ftp客户端ftp客户端;
公共FTPTest(){
server=“nx.dnslinks.net”;
端口=21;
user=“xxxx”;
pass=“#xxxxx”;
theFtpClient=新的FTPClient();
}
静态void deleteDirectoryWalkTree(路径路径)引发IOException{
FileVisitor=新的SimpleFileVisitor(){
@凌驾
公共文件VisitResult visitFile(路径文件,基本文件属性属性属性)引发IOException{
文件。删除(文件);
返回FileVisitResult.CONTINUE;
}
@凌驾
公共文件VisitResult visitFileFailed(路径文件,IOException exc)引发IOException{
文件。删除(文件);
返回FileVisitResult.CONTINUE;
}
@凌驾
公共文件VisitResult postVisitDirectory(路径目录,IOException exc)引发IOException{
如果(exc!=null){
抛出exc;
}
删除(dir);
返回FileVisitResult.CONTINUE;
}
};
walkFileTree(路径,访问者);
}    
公共静态void main(字符串[]args){
FTPTest offtptest=新的FTPTest();
Path Path=Path.get(“/httpdocs/manual uploads/TestingFTPUtil/SubDir_1/SubDir_2”);
试一试{
theFTPTest.deleteDirectoryWalkTree(路径);
}捕获(IOEX异常){
Logger.getLogger(FTPTest.class.getName()).log(Level.SEVERE,null,ex);
}
}

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

当您想为远程FTP系统使用路径时,可能(确实)使用不同的语法。而且主要是相同的语法,不管代码在哪个本地操作系统上运行


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

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

当您想为远程FTP系统使用路径时,可能(确实)使用不同的语法。而且主要是相同的语法,不管代码在哪个本地操作系统上运行


因此,您不应使用
路径
/
路径
类作为FTP路径。

我看不到,您的编辑对您的问题和我的答案的相关性有什么改变。我看不到,您的编辑对您的问题和我的答案的相关性有什么改变。这很有趣。我猜我不能使用SimpleFileVisitor,或者我偶然发现的其他删除目录结构示例。有什么建议吗?如果你的实际问题是“如何删除FTP服务器上的目录结构”,那么就把它作为一个问题发布。我相信我已经回答了你当前的问题(尽管它可能帮助你解决了你的实际问题)。谢谢我找到了这个,很有效!嗯,那很有趣。我猜我不能使用SimpleFileVisitor,或者我偶然发现的其他删除目录结构示例。有什么建议吗?如果你的实际问题是“如何删除FTP服务器上的目录结构”,那么就把它作为一个问题发布。我相信我已经回答了你当前的问题(尽管它可能帮助你解决了你的实际问题)。谢谢我找到了这个,很有效!