2013-08-24 50 views
0

我想爲我製作的遊戲製作保存文件,這些文件中會包含多個txt文件。我的問題是,無論是文件夾,並不會txt文件在我指定的目錄中創建自己,這裏是該文件夾的代碼:如何在Java中創建或編輯文件夾中的txt文件?

File folde = new File("c:/Users/Mike/Desktop/Saves/bob/" + save); 
    try{ 
    if (!folde.exists()) { 
     if (folde.mkdirs()) { 
      System.out.println("Created new save file"); 
     } else { 
      System.out.println("Did not create new save file"); 
     } 
    } 
    }finally{ 
     System.out.println("Folder found."); 
    } 

下面是該文件的代碼:

try{ 
     PrintWriter writer = new PrintWriter("c:/Users/Mike/Desktop/javafiles/Saves/" + save + "/Stats.txt", "UTF-8"); 
     writer.println(Stats.Health); 
     writer.println(Stats.Strength); 
     writer.println(Stats.Constitution); 
     writer.println(Stats.Dexterity); 
     writer.println(Stats.Inteligence); 
     writer.println(Stats.Wisdom); 
     writer.println(Stats.Charisma); 
     writer.close(); 
    } catch (IOException x) { 
      System.err.println("Could not create save file."); 

    } 

這裏是整個類:

package files.maintain; 
import java.io.File; 
import java.io.IOException; 
import java.io.PrintWriter; 
import java.util.Scanner; 
import vars.all.*; 

public class SaveFile { 
MainStart Start = new MainStart(); 
Stats Stats = new Stats(); 
public void save(){ 
    Scanner in = new Scanner(System.in); 
    System.out.println("What should I save as?"); 
    String save = in.nextLine(); 

    File folde = new File("c:/Users/Dave/Desktop/Saves/bob/" + save); 
    try{ 
    if (!folde.exists()) { 
     if (folde.mkdirs()) { 
      System.out.println("Created new save file"); 
     } else { 
      System.out.println("Did not create new save file"); 
     } 
    } 
    }finally{ 
     System.out.println("Folder found."); 
    } 
    try{ 
     PrintWriter writer = new PrintWriter("c:/Users/Dave/Desktop/javafiles/Saves/" + save + "/Stats.txt", "UTF-8"); 
     writer.println(Stats.Health); 
     writer.println(Stats.Strength); 
     writer.println(Stats.Constitution); 
     writer.println(Stats.Dexterity); 
     writer.println(Stats.Inteligence); 
     writer.println(Stats.Wisdom); 
     writer.println(Stats.Charisma); 
     writer.close(); 
    } catch (IOException x) { 
      System.err.println("Could not create save file."); 

    } 
} 
} 

我從控制檯得到我的迴應是:

  • 我該保存些什麼?
  • 鮑勃
  • 找到文件夾。
  • 無法創建保存文件*

我的輸入是大膽, 我檢查這個網站:http://www.mkyong.com/java/how-to-create-directory-in-java/ 和Java教程:http://docs.oracle.com/javase/tutorial/essential/io/file.html 但沒有奏效。

謝謝!

+2

您隱藏IOException後面無用的錯誤消息。將'x.printStackTrace();'添加到catch塊中,您將知道異常的原因。另外,第一部分確保文件夾存在,但第二部分不寫入文件夾。有點奇怪。 –

回答

0

如果不相同,則使路徑保持一致。而不是使用字符串常量,請使用單個Java File對象。您正在使用這兩個不一致的前綴:

"c:/Users/Dave/Desktop/Saves/bob/" 
"c:/Users/Dave/Desktop/javafiles/Saves/" 

此外,您需要改進異常處理和報告。記錄儘可能多的關於原始異常和您的程序正在採取的糾正(或緊急)措施的信息。

+0

謝謝,我還不擅長錯誤處理。 – Hiblah200

相關問題