Я использую этот метод, и он хорошо работает:
1- Копировать И вставить файлы .jar
в папку libs
.
2- Добавить compile fileTree(dir: 'libs', include: '*.jar')
в dependencies
в build.gradle
, тогда все баночки в папке libs
будут включены ..
3- Щелкните правой кнопкой мыши по папке libs
и выберите в списке вариант «Добавить как библиотеку».
Apache Commons
снова приходит на помощь. Метод Commons IO
FilenameUtils.separatorsToSystem (String path)
сделает то, что вы хотите.
Излишне говорить, что Apache Commons IO
будет делать гораздо больше, и на это стоит обратить внимание.
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);
}
}
В новую версию Java 7 включен класс Paths, который позволяет вам делать именно то, что вы хотите (см. http://docs.oracle.com/javase/tutorial/essential/io/pathOps.html). )
вот пример:
String rootStorePath = Paths.get("c:/projects/mystuff/").toString();
Для тех, кто пытается сделать это 7 лет спустя, метод apache commons separatorsToSystem был перемещен в класс FilenameUtils:
FilenameUtils.separatorsToSystem(String path)
Я думаю, что в 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, чтобы сделать что-то простое. В этом случае у них нет того, что я предлагаю в любом случае.
Есть ли у вас возможность использовать
System.getProperty("file.separator")
для построения строки, представляющей путь?
Разве недостаточно сказать:
"path"+File.Seperator+"to"+File.Seperator+"some"+File.Seperator+"file"