Java & Ma c - Как записать файл по относительному пути - PullRequest
0 голосов
/ 04 августа 2020

Я использую ma c со сценарием, который записывает файлы в папку Documents. Но я хочу иметь возможность написать его там, где я могу отправить его своим друзьям, и им не нужно менять путь к файлу.

File myFile = new File("Users/MyName/Documents/Test/user.text/");

Есть ли способ сделать его относительным, где я не нужно переключать MyName на то, как зовут следующего человека P C?

Ответы [ 2 ]

0 голосов
/ 04 августа 2020

Для тех, у кого проблемы с @rzwitserloot, ответьте с решением ("user.home"), вот что мне подходит. Это немного беспорядочно, но это то, что работает.

public class WritingFile {

    static String data = "This is THe DATA in the output file from a jar. Did it work!?!!";
    //static String paths;
    static String full;
    //static String tester = "/Users/226331/Documents/Test/filesname.txt/";
    public static void main(String[] args) {
        
        pathMaker();
        makeFile();
    }

    public static void pathMaker() {
        //Path path = new Paths.get("test.txt");
        String paths = System.getProperty("user.home");
        System.out.println(paths);
        //System.getenv(paths);
        //System.out.println(paths);
        
        full = paths + "/Documents/Test/filesname.txt/";
        System.out.println(full);
    }
    public static void makeFile() {
        try {
              // Creates a FileWriter
                File myFile = new File(full);
            FileWriter output = new FileWriter(myFile);

              // Writes the string to the file
              output.write(data);

              // Closes the writer
              output.close();
            }

            catch (Exception e) {
              e.getStackTrace();
              e.printStackTrace();
            }
    }
    
}
0 голосов
/ 04 августа 2020

Системное свойство user.home - это маг c, который вы ищете. К сожалению, не существует способа c определения папки с документами, связанного с ОС, вероятно, потому, что это не универсальная концепция.

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

Собираем вместе:

Path p = Paths.get(System.getProperty("user.home"));
Path candidate = p.resolve("Documents");
if (!Files.isDirectory(candidate)) candidate = p.resolve("My Documents");
if (!Files.isDirectory(candidate)) candidate = p;
p = p.resolve("Test").resolve("user.text");
Files.createDirectories(p.getParent());
Files.write(p, "Hello!");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...