2017-12-22 9 views
-2

비용을 입력 할 수있는 코드가 있습니다. 그러나이 프로그램은 Linux의 지정된 폴더에 텍스트 파일을 쓰지 않습니다 (Ubuntu 16.04). 이 프로그램은 코드가 있던 폴더에 파일을 정상적으로 작성하는 데 사용됩니다. 지금은 특정 폴더에 파일을 쓰려고하지만 모든 사용자가 읽기, 쓰기 및 실행 권한을 설정하더라도 파일이 생성되지는 않습니다. 코드를 추가하고 싶습니다. 디렉토리를 만들지 만 특정 디렉토리 안에 파일을 쓰지 못합니다. 어떤 도움이나지도라도 부탁드립니다. 이 오류로 인해 주어진 path.It와 현재없이 디렉토리에 아마내 Java 코드가 Linux에 파일을 작성하지 않습니다.

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(); 
    } 



    } 
} 
+0

무엇이 예외입니까? – gusto2

+0

This --- --- java.io.FileNotFoundException : /home/USER/My_Data/Budget_backup/Budget_app_data_expenses/budget_back_up.txt (해당 파일이나 디렉토리가 없음) – hbrtxito

+1

이 [mcve]를 제공하십시오. 파일이있는 실제 URL은 무엇입니까? 퍼미션이란 무엇인가, 또한 java.io는 파일 관리를위한 최신 API가 아니다. 'java.nio'는 예외 메시지에 대해 더 구체적으로 사용하는 것이 더 낫습니다. – AxelH

답변

2

는이 디렉토리는 다음 처음 생성되면 당신이해야 mkdirs()

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

을 사용하여 수행 할 수 있습니다 작성해야합니다() 오류를

의 주석 directory.mkdirs에 직면하지

Files.createDirectories(
        Paths.get(dataFolder), 
        PosixFilePermissions.asFileAttribute(perms)); 
      directory.mkdirs(); 
Mac과 페도라에서 저 모두를위한 작업을 수행

는 또한 잘못된 디렉토리/My_Data/Budget_backup "에서 파일을 찾기 위해 노력하는 경로 객체에서 코드

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/Budget_app_data_expenses

이 경우 if 조건은 잘못된 디렉토리에서 파일을 검색하고 경로가 잘못된 경우 If 조건이 항상 적용됩니다.

+0

훌륭합니다! 난 그냥 mkdirs에 대한 의견을 Undid 그리고 그것은 완벽하게 작동합니다! 내 문제를 해결해 주셔서 대단히 감사합니다! – hbrtxito