我的java代码没有在Linux上编写文件
我有一些代码可以输入我的费用。但是,该程序不会将文本文件写入Linux(Ubuntu 16.04)上的指定文件夹。该程序通常将文件写入代码所在的文件夹中。现在,我试图将文件写入一个特定的文件夹,但失败了(尽管我为所有用户设置了读、写和执行权限,但文件并不是由它创建的。)我想补充一点,代码生成目录,但无法在特定目录中写入文件。任何帮助或指导都将不胜感激
import java.io.*
import java.util.EnumSet;
import java.util.Set;
public class Create_File {
private Services services = new Services();
final Set<PosixFilePermission> perms = PosixFilePermissions.fromString("rwxrwxrwx");
public void create_File(String content) {
int product_id =0;
String headline = "XXXX" ;
String username = System.getProperty("user.home");
String dataFolder = System.getProperty("user.home") + "/My_Data/Budget_backup";
System.out.println(username);
File directory = new File(dataFolder+File.separator+"Budget_app_data_expenses");
String name_of_file = "budget_back_up.txt";
File file = new File(directory+File.separator+ name_of_file);
System.out.println(file.toString());
Path path = FileSystems.getDefault().getPath(dataFolder, name_of_file );
if (Files.notExists(path, new LinkOption[]{LinkOption.NOFOLLOW_LINKS})){
try {
Files.createDirectories(
Paths.get(dataFolder),
PosixFilePermissions.asFileAttribute(perms));
//directory.mkdirs();
//file.createNewFile();
product_id = 1;
System.out.println("file created");
FileWriter writer = new FileWriter(file, true);
BufferedWriter bw = new BufferedWriter(writer);
bw.write(headline);
bw.close();
}catch(IOException ex){
ex.printStackTrace();
}
}else {
product_id = services.max_id();
System.out.println("The directory is already on the computer");
try {
FileWriter writer = new FileWriter(file, true);
BufferedWriter bw = new BufferedWriter(writer);
bw.write("\n"+ "("+ product_id + " , " +content);
bw.close();
}catch(IOException ex){
ex.printStackTrace();
}
}
}
# 1 楼答案
此错误可能是由于给定路径中没有目录。需要使用mkdirs()创建它
一旦最初创建了一个目录,您就不应该遇到任何错误
取消注释目录。mkdirs()在Mac和Fedora中对我都有效
同时看看你的代码
在路径对象中,您试图在不正确的目录/My_Data/Budget_backup”中查找文件。
在/My_Data/Budget_backup/Budget_app_Data_expenses中创建文件时
在这种情况下,如果条件在不正确的目录中搜索文件,并且如果条件始终为真,因为路径不正确