Почему разделитель изменяется путем Path parentPath = Paths.get (strPath)? - PullRequest
1 голос
/ 24 июня 2019

В моем приложении для 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);
    }
}

}

1 Ответ

0 голосов
/ 24 июня 2019
Классы

Path / Paths предназначены для изоляции вашего кода от синтаксиса пути операционной системы local .

Хотя вы хотите использовать путь для удаленной FTP-системы, которая может (использует) другой синтаксис. И в основном тот же синтаксис, независимо от того, в какой локальной операционной системе работает ваш код.

Так что вы не должны использовать Path / Paths классы для FTP-путей.

...