Java FileWriter class - java.io.FileNotFoundException: * 没有那个文件或目录 -Ubuntu
Java FileWriter class - java.io.FileNotFoundException: * no such file or directory -Ubuntu
我正在使用此方法在我的项目的子目录中生成一些海龟文件.ttl
:
public static void write(int id, int depth){
try {
FileWriter fw = null;
switch (getName()){
case ("KG1"):
fw = new FileWriter("WWW/KG1/" + depth + "/" + id + ".ttl");
break;
case ("KG2"):
fw = new FileWriter("WWW/KG2/" + depth + "/" + id + ".ttl");
}
// Write something
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
但是当我将我的项目放在 Ubuntu 中时(它在 Windows 中仍然工作正常)在 java class FileWriter
:
java.io.FileNotFoundException: /WWW/KG1/2/0.ttl (No such file or directory)
我在两个操作系统上都使用 Eclipse Neon,但 Ubuntu 似乎对此并不满意。
这是我目前尝试过的方法:
为主项目目录下的所有文件和目录添加写权限
使用绝对路径而不是相对路径,通过使用 System.getProperty("usr.dir")
,并绘制我给 FileWriter
的所有路径字符串,但它不起作用。
有什么建议吗?
谢谢!
我会尝试使用 File.separator 并确保父目录存在。
这是一个例子(可能有语法问题)。
final String WWW = "WWW";
final String KG1 = "KG1";
final String KG2 = "KG2";
final String extension = ".ttl";
int id = 1;
int depth = 1;
String filePath = "." // current dir
+ File.separator
+ WWW
+ File.separator
+ KG1
+ File.separator
+ depth
+ File.separator
+ id
+ extension;
File file = new File(filePath);
// make sure parent dir exists (else created)
file.getParentFile().mkdirs();
FileWriter writer = new FileWriter(file);
您可以使用 Path 和 File 对象让事情变得更轻松。这是一个版本,如果它不存在,可以选择创建想要的目录
Path path = Paths.get("WWW", "KG1", String.valueOf(depth));
try {
Files.createDirectories(path);
FileWriter fw = new FileWriter(new File(path.toFile(), id + ".ttl"));
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
请注意,我故意跳过 switch
以简化答案
我正在使用此方法在我的项目的子目录中生成一些海龟文件.ttl
:
public static void write(int id, int depth){
try {
FileWriter fw = null;
switch (getName()){
case ("KG1"):
fw = new FileWriter("WWW/KG1/" + depth + "/" + id + ".ttl");
break;
case ("KG2"):
fw = new FileWriter("WWW/KG2/" + depth + "/" + id + ".ttl");
}
// Write something
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
但是当我将我的项目放在 Ubuntu 中时(它在 Windows 中仍然工作正常)在 java class FileWriter
:
java.io.FileNotFoundException: /WWW/KG1/2/0.ttl (No such file or directory)
我在两个操作系统上都使用 Eclipse Neon,但 Ubuntu 似乎对此并不满意。
这是我目前尝试过的方法:
为主项目目录下的所有文件和目录添加写权限
使用绝对路径而不是相对路径,通过使用
System.getProperty("usr.dir")
,并绘制我给FileWriter
的所有路径字符串,但它不起作用。
有什么建议吗?
谢谢!
我会尝试使用 File.separator 并确保父目录存在。 这是一个例子(可能有语法问题)。
final String WWW = "WWW";
final String KG1 = "KG1";
final String KG2 = "KG2";
final String extension = ".ttl";
int id = 1;
int depth = 1;
String filePath = "." // current dir
+ File.separator
+ WWW
+ File.separator
+ KG1
+ File.separator
+ depth
+ File.separator
+ id
+ extension;
File file = new File(filePath);
// make sure parent dir exists (else created)
file.getParentFile().mkdirs();
FileWriter writer = new FileWriter(file);
您可以使用 Path 和 File 对象让事情变得更轻松。这是一个版本,如果它不存在,可以选择创建想要的目录
Path path = Paths.get("WWW", "KG1", String.valueOf(depth));
try {
Files.createDirectories(path);
FileWriter fw = new FileWriter(new File(path.toFile(), id + ".ttl"));
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
请注意,我故意跳过 switch
以简化答案