2014-10-20 39 views
0

我想將角色的名稱和性別導出到文本文件。另外,我需要在Mac和PC電腦上導出。我嘗試了各種方法,但都沒有爲我工作,或者我可能錯誤地放置了它們。將數據從Java導出到文本文件

我改變了我的代碼和我嘗試:

import java.util.Scanner; 
import java.io.PrintWriter; 
import java.io.File; 
import java.util.Scanner; 

public class Character { 

    public static void main (String[] args) { 
     String characterGender; 
     String characterName; 

     Scanner scan = new Scanner(System.in); 

     System.out.println("Welcome to Ricardo's character creator!"); 

     System.out.println("Is your character a boy or a girl?"); 
     characterGender = scan.nextLine(); 

     if (characterGender.equals("girl")) { 
      System.out.println("Awesome! Please enter her name: "); 
      characterName = scan.nextLine(); 
     } else { 
      System.out.println("Awesome! Please enter his name: "); 
      characterName = scan.nextLine(); 
     } 

     System.out.print("Alright! " + characterName + " has been created!"); 

     PrintWriter out = new PrintWriter("Character.txt"); 
     out.println(characterName); 
     out.println(characterGender); 
     out.close(); 

    } 
} 

我得到這樣的錯誤:

Character.java:34: error: unreported exception FileNotFoundException; must be caught or declared to be thrown.

回答

0

您需要處理FileNotFoundException異常。這可以通過兩種:

捕捉異常(首選方法):

PrintWriter out; 
try { 
    out = new PrintWriter("Character.txt"); 
    out.println(characterName); 
    out.println(characterGender); 
    out.close(); 
} catch (FileNotFoundException e) { 
    System.err.println("File doesn't exist"); 
    e.printStackTrace(); 
} 

或拋出異常:

public static void main (String[] args) throws FileNotFoundException 

注:import java.io.FileNotFoundException;必須包含在這兩種情況下。

這是一些關於Exceptions的java文檔。

0

嘗試使用文件編寫器而不是打印Writer。 下面是我的示例代碼,希望你不介意硬性解釋。

String filetowrite = "C:/Users/Desktop/test.txt"; // Point to your location 
FileWriter fw = new FileWriter(filetowrite); 
fw.write("Hello, This is the test"); 
fw.close(); 
+1

這仍然會遇到OP的問題,這是沒有處理異常。它只是一個IOException,而不是FileNotFoundException。 – Grice 2014-10-20 20:00:18

-1

既然你是從控制檯& 讀取數據寫入到文件建議使用的BufferedReader &的BufferedWriter它。爲了處理異常&,如果你想使用Log4j添加異常的細節發生在日誌文件中,你可以做一些象下面這樣:

BufferedReader br = null; 
BufferedWriter bw = null 
Logger logger = LogManager.getLogger(Character.class); 
try { 
    String data; 
    br = new BufferedReader(new InputStreamReader(System.in)); 
    File file = new File("Character.txt"); 
    // if file doesn't exists, then create it 
    if (!file.exists()) { 
     file.createNewFile(); 
    } 

    FileWriter fw = new FileWriter(file.getAbsoluteFile()); 
    bw = new BufferedWriter(fw); 

    while ((data = br.readLine()) != null) { 
     System.out.println(data); 
     bw.write(data); 
    } 
} catch (IOException e) { 
    StringWriter() stack = new StringWriter(); 
    e.printStackTrace(new PrintWriter(stack)); 
    logger.fatal(stack.toString(), Character.class); 
} finally { 
    try { 
     if (br != null && bw != null){ 
      bw.close(); 
      br.close(); 
     } 
    } catch (IOException ex) { 
     StringWriter() stack = new StringWriter(); 
     e.printStackTrace(new PrintWriter(stack)); 
     logger.fatal(stack.toString(), Character.class); 
    } 
} 

OR

您可以使用try-with-resources,可從JDK 1.7起,這將負責關閉使用的資源。在你的情況下,它是一個文件。

try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) { 
    String data; 
    File file = new File("Character.txt"); 
    FileWriter fw = new FileWriter(file.getAbsoluteFile()); 
    BufferedWriter bw = new BufferedWriter(fw); 

    while ((data = br.readLine()) != null) { 
     System.out.println(data); 
     bw.write(data); 
    } 
} catch (IOException e) { 
    e.printStackTrace(); 
} 
+0

OP不從文件讀取,他正在從標準輸入讀取。他想寫一個文件。 – Grice 2014-10-20 20:02:18