2014-10-20 3 views
0

Я хочу экспортировать имя и пол символа в текстовый файл. Кроме того, мне нужно экспортировать как на компьютеры Mac, так и на ПК. Я пробовал различные методы, но никто не работал для меня, или я мог бы поместить их неправильно.Экспорт данных из 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; должны быть включены в обоих случаях.

Ниже приведена документация java на Exceptions.

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

Это все равно столкнется с проблемой, которую имел ОП, которая не обрабатывала исключения. Это просто исключение IOException вместо исключения FileNotFoundException. – Grice

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

ИЛИ

Вы можете использовать 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

Смежные вопросы