Существует ли утилита Java, которая преобразует Строковый путь для использования корректного символа Разделителя файлов?

Я использую этот метод, и он хорошо работает:

1- Копировать И вставить файлы .jar в папку libs.

2- Добавить compile fileTree(dir: 'libs', include: '*.jar') в dependencies в build.gradle, тогда все баночки в папке libs будут включены ..

3- Щелкните правой кнопкой мыши по папке libs и выберите в списке вариант «Добавить как библиотеку».

22
задан Grundlefleck 8 November 2009 в 17:47
поделиться

7 ответов

Apache Commons снова приходит на помощь. Метод Commons IO FilenameUtils.separatorsToSystem (String path) сделает то, что вы хотите.

Излишне говорить, что Apache Commons IO будет делать гораздо больше, и на это стоит обратить внимание.

38
ответ дан 29 November 2019 в 03:35
поделиться

A "/path/to/some/file" на самом деле работает под Windows Vista и XP.

new java.io.File("/path/to/some/file").getAbsoluteFile()

> C:\path\to\some\file

Но это все еще не переносимо , поскольку Windows имеет несколько корней . Таким образом, корневой каталог должен быть выбран каким-либо образом. Не должно быть проблем с относительными путями.

Редактировать:

Apache commons io не не помогает с envs, отличными от unix & amp; окна. Исходный код Apache io :

public static String separatorsToSystem(String path) { 
    if (path == null) {
     return null;
    }
    if (isSystemWindows()) {
      return separatorsToWindows(path);
    } else {
      return separatorsToUnix(path);
    }
}
16
ответ дан Thomas Jung 29 November 2019 в 03:35
поделиться

В новую версию Java 7 включен класс Paths, который позволяет вам делать именно то, что вы хотите (см. http://docs.oracle.com/javase/tutorial/essential/io/pathOps.html). )

вот пример:

String rootStorePath = Paths.get("c:/projects/mystuff/").toString();
4
ответ дан Gigas64 29 November 2019 в 03:35
поделиться

Для тех, кто пытается сделать это 7 лет спустя, метод apache commons separatorsToSystem был перемещен в класс FilenameUtils:

FilenameUtils.separatorsToSystem(String path)
2
ответ дан java-addict301 29 November 2019 в 03:35
поделиться

Я думаю, что в Java Paths есть эта дыра.

String rootStorePath = Paths.get ("c: / projects / mystuff /"). ToString ();

работает, если вы запускаете его в системе, в которой есть файловая система, которую вы должны использовать. Как уже указывалось, он использовал текущую файловую систему ОС.

Мне нужно работать с путями между Windows и Linux, скажем, чтобы скопировать файл из одного в другой. При использовании «/» каждая работа, я думаю, если вы используете все команды Java, но мне нужно сделать вызов sftp, поэтому использование / или file.separator и т. Д. ... не поможет мне. Я не могу использовать Path (), потому что он конвертирует мою в файловую систему по умолчанию, на которой я работаю "сейчас".

Что нужно Java:
`в системе Windows: путь posixPath = Paths.get (" / home / mystuff ", FileSystem.Posix); остается / home / mystuff / и не преобразуется в \ home \ mystuff

в системе Linux: String winPath = Paths.get ("c: \ home \ mystuff", FileSystem.Windows) .toString () ; `остается c: \ home \ mystuff и не преобразуется в / c: / home / mystuff

аналогично работе с наборами символов:

URLEncoder.encode (« что угодно здесь », "UTF-8") .getBytes ();

PS Я также не хочу загружать целый jar-файл apache io, чтобы сделать что-то простое. В этом случае у них нет того, что я предлагаю в любом случае.

2
ответ дан Stan Towianski 29 November 2019 в 03:35
поделиться

Есть ли у вас возможность использовать

System.getProperty("file.separator")

для построения строки, представляющей путь?

2
ответ дан 29 November 2019 в 03:35
поделиться

Разве недостаточно сказать:

"path"+File.Seperator+"to"+File.Seperator+"some"+File.Seperator+"file"
0
ответ дан 29 November 2019 в 03:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: