【发布时间】:2021-09-03 16:12:21
【问题描述】:
我在 Raspberry Pi 上创建文件时遇到了一些问题。相同的代码在 Windows 上运行没有任何问题...
令人惊讶的是System.getProperty("user.home"); 只返回/。
System.getProperty("user.dir"); 返回/var/lib/abc 但我猜我的应用程序无法访问它。
代码:
String path = System.getProperty("user.dir") + "/def";
File file = new File("/a.txt");
file.delete();
try {
new File(path).mkdirs();
file.createNewFile();
} catch (IOException e1) {
e1.printStackTrace();
}
try {
FileWriter writer = new FileWriter(file);
writer.write(value);
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
例外情况:
/var/lib/abc/def/a.txt (No such file or directory)
java.base/java.io.FileInputStream.open0(Native Method)
java.base/java.io.FileInputStream.open(FileInputStream.java:219)
java.base/java.io.FileInputStream.(FileInputStream.java:157)
java.base/java.io.FileInputStream.(FileInputStream.java:112)
java.base/java.io.FileReader.(FileReader.java:60)
No such file or directory
java.base/java.io.UnixFileSystem.createFileExclusively(Native Method)
java.base/java.io.File.createNewFile(File.java:1035)
/var/lib/abc/def/a.txt (No such file or directory)
java.base/java.io.FileOutputStream.open0(Native Method)
java.base/java.io.FileOutputStream.open(FileOutputStream.java:298)
java.base/java.io.FileOutputStream.(FileOutputStream.java:237)
java.base/java.io.FileOutputStream.(FileOutputStream.java:187)
java.base/java.io.FileWriter.(FileWriter.java:96)
任何想法在哪里以及如何在没有访问限制的情况下创建文件?它应该可以跨平台工作。
【问题讨论】:
-
@MarsAtomic 不,我已经看过这篇文章。我不是想找出任何用户信息。我只是想在“某处”保存一个文件。但它必须跨平台(Windows 和 Linux)工作,而 Raspberry Pi 操作系统目前无法正常工作......
-
我的感觉是这是用户创建方式的专长。您是否检查了用户的主目录在哪里以及在 Java 之外应用了哪些权限?那么至少您知道问题与操作系统有关,而不是 Java。
标签: java file raspberry-pi filesystems system-properties