0

내 프로그램 파일을 읽거나 쓰려고 할 때마다, 나는 다음과 같은 메시지가 얻을이 있었다 내가 인터넷에이 고개를읽기/쓰기 FileNotFoundException이 (액세스가 거부되었습니다)

[System]: LoadConfig >> Config file is missing or corrupt! 
C:\Users\Cardinal System\AppData\Roaming\OrlowBase\Run.config (Access is denied) 

, 모두를 문제는 단순히 디렉토리를 읽으려고하는 것이 었습니다. 파일을 쓰는 것과 같은 방법이었습니다. 나는 모든 것을 두 번 확인했지만, 계속해서 throwexception을 계속합니다. 관리자 권한으로 프로그램을 실행하려고 시도했지만 아무 것도하지 않았습니다./

내 코드를 보면 모든 것을 기록하고 있습니다. 내 기록 사본을 제공 할 것입니다.

이 내 독서 방법은 :

public static ArrayList<String> readConfig(){ 

    ArrayList<String> list = new ArrayList<String>(); 

    try { 
     Scanner sc = new Scanner(searchForConfig(baseDir)); 
     //searchForConfig(baseDir) always will return a file. 

     while(sc.hasNextLine()){ 
      list.add(sc.nextLine()); 
     } 

     sc.close(); 

     return list; 
    } catch (FileNotFoundException e) { 
     Logger.addElement("[System]: LoadConfig >> Config file is missing or corrupt!"); 
     Logger.addElement(e.getMessage()); 
    } 

    list.add("Nothing"); 

    return list; 
} 

내 쓰기 방법은 다음

public static boolean createNewFile(String Name, String Path, ArrayList<String> Content, boolean override){ 

    File file2 = new File(Path + dash + Name); 

    if(override == false & file2.exists()){ 

     Name += "1"; 

    }else{ 
     if(override == true & file2.exists()){ 
      file2.delete(); 
     } 
    } 

    if(!(Name.indexOf(".") > 0)){ 
     Name += ".cardinal"; 
    } 

    File file = new File(Path); 
    if(!file.isDirectory() | !file.exists()){ 
     Logger.addElement("[FileWriter]: NewFile >> New file path is invalid."); 
     Logger.addElement("[FileWriter]: NewFile >> Creating dirs at path."); 
     file.mkdirs(); 
    } 


    try { 

     PrintWriter pw = new PrintWriter(Path + dash + Name, "UTF-8"); 

     for(int i = 0; i < Content.size(); i++){ 
      pw.println(Content.get(i)); 
     } 
     Logger.addElement("[FileWriter]: NewFile >> Creating file " + Name + " at " + Path + dash); 
     pw.close(); 
     return true; 

    } catch (FileNotFoundException e) { 
     Logger.addElement("[FileWriter]: NewFile >> FileNotFoundException."); 
     Logger.addElement(e.getMessage()); 
     return false; 
    } catch (UnsupportedEncodingException e) { 
     Logger.addElement("[FileWriter]: NewFile >> UnsupportedEncodingException."); 
     Logger.addElement(e.getMessage()); 
     return false; 
    } 
} 

업데이트 : stacktraces을 기록하는 내 로거를 변경 등을 가지고 정보. 그것은 조금 긴하지만 모든이있다 :

[System]: Config >> Searching for config in base directory... 
[System]: LoadConfig >> Config file is missing or corrupt! 
java.io.FileNotFoundException: C:\Users\Cardinal System\AppData\Roaming\OrlowBase\Run.config (Access is denied) 
    at java.io.FileInputStream.open0(Native Method) 
    at java.io.FileInputStream.open(Unknown Source) 
    at java.io.FileInputStream.<init>(Unknown Source) 
    at java.util.Scanner.<init>(Unknown Source) 
    at com.orlow.base.FileSystem.Config.LoadConfig.readConfig(LoadConfig.java:21) 
    at com.orlow.base.FileSystem.Config.Config.<clinit>(Config.java:9) 
    at com.orlow.base.Init.Init.preInit(Init.java:20) 
    at com.orlow.base.Main.main(Main.java:10) 
[System]: Config >> Searching for config in base directory... 
[System]: LoadConfig >> Config file is missing or corrupt! 
java.io.FileNotFoundException: C:\Users\Cardinal System\AppData\Roaming\OrlowBase\Run.config (Access is denied) 
    at java.io.FileInputStream.open0(Native Method) 
    at java.io.FileInputStream.open(Unknown Source) 
    at java.io.FileInputStream.<init>(Unknown Source) 
    at java.util.Scanner.<init>(Unknown Source) 
    at com.orlow.base.FileSystem.Config.LoadConfig.readConfig(LoadConfig.java:21) 
    at com.orlow.base.FileSystem.Config.Config.checkConfig(Config.java:13) 
    at com.orlow.base.Init.Init.preInit(Init.java:20) 
    at com.orlow.base.Main.main(Main.java:10) 
[preInit]: Logger >> Starting logger... 
[preInit]: Tests >> Testing config... 
[System]: Config >> Searching for config in base directory... 
[System]: LoadConfig >> Config file is missing or corrupt! 
java.io.FileNotFoundException: C:\Users\Cardinal System\AppData\Roaming\OrlowBase\Run.config (Access is denied) 
    at java.io.FileInputStream.open0(Native Method) 
    at java.io.FileInputStream.open(Unknown Source) 
    at java.io.FileInputStream.<init>(Unknown Source) 
    at java.util.Scanner.<init>(Unknown Source) 
    at com.orlow.base.FileSystem.Config.LoadConfig.readConfig(LoadConfig.java:21) 
    at com.orlow.base.Init.Init.preTests(Init.java:62) 
    at com.orlow.base.Init.Init.preInit(Init.java:22) 
    at com.orlow.base.Main.main(Main.java:10) 
[preInit]: Config >> Config file is corrupt. 
[System]: SaveConfig >> Replacing Config file... 
java.io.FileNotFoundException: C:\Users\Cardinal System\AppData\Roaming\OrlowBase\Run.config (Access is denied) 
    at java.io.FileOutputStream.open0(Native Method) 
    at java.io.FileOutputStream.open(Unknown Source) 
    at java.io.FileOutputStream.<init>(Unknown Source) 
    at java.io.FileOutputStream.<init>(Unknown Source) 
    at java.io.PrintWriter.<init>(Unknown Source) 
    at java.io.PrintWriter.<init>(Unknown Source) 
    at com.orlow.base.FileSystem.DataStorage.Files.createNewFile(Files.java:98) 
    at com.orlow.base.FileSystem.Config.SaveConfig.replaceCorruptConfig(SaveConfig.java:26) 
    at com.orlow.base.FileSystem.Config.Config.getConfigMode(Config.java:32) 
    at com.orlow.base.FileSystem.Config.Config.getBuildPath(Config.java:77) 
    at com.orlow.base.Init.Init.preTests(Init.java:68) 
    at com.orlow.base.Init.Init.preInit(Init.java:22) 
    at com.orlow.base.Main.main(Main.java:10) 
[preInit]: Config >> Config file is corrupt. 
[System]: SaveConfig >> Replacing Config file... 
java.io.FileNotFoundException: C:\Users\Cardinal System\AppData\Roaming\OrlowBase\Run.config (Access is denied) 
    at java.io.FileOutputStream.open0(Native Method) 
    at java.io.FileOutputStream.open(Unknown Source) 
    at java.io.FileOutputStream.<init>(Unknown Source) 
    at java.io.FileOutputStream.<init>(Unknown Source) 
    at java.io.PrintWriter.<init>(Unknown Source) 
    at java.io.PrintWriter.<init>(Unknown Source) 
    at com.orlow.base.FileSystem.DataStorage.Files.createNewFile(Files.java:98) 
    at com.orlow.base.FileSystem.Config.SaveConfig.replaceCorruptConfig(SaveConfig.java:26) 
    at com.orlow.base.FileSystem.Config.Config.getConfigMode(Config.java:32) 
    at com.orlow.base.Init.Init.preTests(Init.java:74) 
    at com.orlow.base.Init.Init.preInit(Init.java:22) 
    at com.orlow.base.Main.main(Main.java:10) 
[preInit]: Config >> Config file is corrupt. 
[System]: SaveConfig >> Replacing Config file... 
java.io.FileNotFoundException: C:\Users\Cardinal System\AppData\Roaming\OrlowBase\Run.config (Access is denied) 
    at java.io.FileOutputStream.open0(Native Method) 
    at java.io.FileOutputStream.open(Unknown Source) 
    at java.io.FileOutputStream.<init>(Unknown Source) 
    at java.io.FileOutputStream.<init>(Unknown Source) 
    at java.io.PrintWriter.<init>(Unknown Source) 
    at java.io.PrintWriter.<init>(Unknown Source) 
    at com.orlow.base.FileSystem.DataStorage.Files.createNewFile(Files.java:98) 
    at com.orlow.base.FileSystem.Config.SaveConfig.replaceCorruptConfig(SaveConfig.java:26) 
    at com.orlow.base.FileSystem.Config.Config.getConfigMode(Config.java:32) 
    at com.orlow.base.FileSystem.Config.Config.getLogPath(Config.java:126) 
    at com.orlow.base.Init.Init.preTests(Init.java:80) 
    at com.orlow.base.Init.Init.preInit(Init.java:22) 
    at com.orlow.base.Main.main(Main.java:10) 
[preInit]: Config >> Log path is set to C:\Users\Cardinal System\AppData\Roaming\OrlowBase\Logs 
[preInit]: Tests >> Config >> Config test was successful. 
[preInit] Tests >> Testing file writer... 
[FileWriter]: NewFile >> Creating file firstTestFile.cardinal at C:\Users\Cardinal System\AppData\Roaming\OrlowBase\Data\ 
[FileWriter]: NewFile >> Creating file secondTextFile.cardinal at C:\Users\Cardinal System\AppData\Roaming\OrlowBase\Data\ 
[FileWriter]: NewFile >> Creating file thirdTestFile.cardinal at C:\Users\Cardinal System\Desktop\Peter\Programming\Java\Eclipse\Workspaces\Main Workspace\TestSkills\ 
[FileWriter]: NewFile >> Creating file forthTestFile.cardinal at C:\Users\Cardinal System\Desktop\Peter\Programming\Java\Eclipse\Workspaces\Main Workspace\TestSkills\ 
[preInit] Tests >> File writer test was successful. 
[Init]: Console >> Rendering console GUI... 
[System]: Console >> Type "?" for help. 
+0

'및'에'&&'와'변경 |'에'||' –

+0

와'변경하는 경우 (file.isDirectory() |!! file.exists()) {'에' if (! file.isDirectory() &&! file.exists()) {' –

+0

다른 말로하면 코드 –

답변

1

Orlowbase 폴더에서 사용자의 권한을 확인하십시오. 읽기/쓰기/전체 제어에 대한 권한을 거부 할 때 예외가 표시됩니다. 허용하면 프로그램이 올바르게 실행됩니다. 어쩌면

enter image description here

+0

폴더 사용 권한을 변경하지 않고도이 문제를 해결할 수 있었지만 여전히 좋은 답변을 얻으려는 노력을 기울 이셨으므로 현상금을 받으실 수 있습니다 :) –

-1
  • 그것은 권한 문제가 될 수 있습니다. 어떤 사용자로 애플리케이션을 실행하고 있습니까? '추기경 시스템'이 아닌 다른 사용자입니까? C:\Users\Cardinal System\AppData\Roaming\OrlowBase\*
  • FileNotFoundException을 포착하는 동안 stacktrace를 삼키지 마십시오. 그것은 당신을 근본적인 원인으로 이끌 수 있습니다.

업데이트 : 'AppData'는 사용자 및 관리자 만 액세스 할 수있는 사용자 별 폴더입니다. 자세한 내용은 여기를 참조하십시오. Can any user access the %APPDATA% folder

+0

관리자 권한으로 프로그램을 실행 했으므로 문제가되어서는 안됩니다. 또한 내 컴퓨터가 아닌 다른 컴퓨터에서도 작동하므로 폴더 사용 권한을 변경할 수 없습니다 :/AppData에 대해, Minecraft는 java입니다. 기반 권한 상승 권한이 없는데도 AppData에 대한 액세스 권한이 있습니다. –

+1

createNewFile() 메서드를 테스트하여 내 컴퓨터에 오류없이 파일을 만듭니다. searchForConfig() 메소드에 대한 코드를 공유 할 수 있습니까? "basedir"경로는 무엇입니까? 로그에이 방법에 대한 경로/디렉토리 관련 정보가 없습니다! – VinPro