有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

我的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) 个答案

  1. # 1 楼答案

    此错误可能是由于给定路径中没有目录。需要使用mkdirs()创建它

    /home/USER/My_Data/Budget_backup/Budget_app_data_expenses/bu‌​dget_back_up.txt (No such file or directory) 
    

    一旦最初创建了一个目录,您就不应该遇到任何错误

    取消注释目录。mkdirs()在Mac和Fedora中对我都有效

     Files.createDirectories(
                        Paths.get(dataFolder),
                        PosixFilePermissions.asFileAttribute(perms));
               directory.mkdirs();
    

    同时看看你的代码

     String dataFolder = System.getProperty("user.home") + "/My_Data/Budget_backup";
    
         File directory = new     File(dataFolder+File.separator+"Budget_app_data_expenses");
    
        File file = new File(directory+File.separator+ name_of_file);
    
        Path path = FileSystems.getDefault().getPath(dataFolder, name_of_file );
    

    在路径对象中,您试图在不正确的目录/My_Data/Budget_backup”中查找文件。

    在/My_Data/Budget_backup/Budget_app_Data_expenses中创建文件时

    在这种情况下,如果条件在不正确的目录中搜索文件,并且如果条件始终为真,因为路径不正确