Возможно, вы используете java.io.File
. В этом случае getPath()
не возвращает абсолютный путь.Например:
System.out.println(System.getProperty("user.dir")); // Prints "/home/pc/"
// This means that all files with an relative path will be located in "/home/pc/"
File file = new File("example.txt");
// Now the file, we are pointing to is: "/home/pc/example.txt"
System.out.println(file.getPath()); // Prints "example.txt"
System.out.println(file.getAbsolutePath()); // Prints "/home/pc/example.txt"
Итак, вывод: используйте java.io.File.getAbsolutePath()
.
Совет: также существует метод java.io.File.getAbsoluteFile()
.Это вернет абсолютный путь при вызове getPath()
.
Я просто прочитал ваш комментарий к другому ответу:
Я думаю, что вы сделали:
String[] cmd = {"touch /home/pc/example.txt"};
Runtime.getRuntime().exec(cmd);
Это не сработает, потому что ОС ищет приложение под названием "touch /home/pc/example.txt
".
Теперь вы думаете "WTF? Почему?"
Поскольку метод Runtime.getRuntime().exec(String cmd);
разбивает вашу строку напространства.И Runtime.getRuntime().exec(String[] cmdarray);
не разделяет это.Итак, вы должны сделать это самостоятельно:
String[] cmd = {"touch", "/home/pc/example.txt"};
Runtime.getRuntime().exec(cmd);