2012-05-01 6 views
1

Мне нужно написать программу на Java, которая будет записывать введенную информацию в консоль в TXT-файл. Если файл .txt уже существует, ему нужно будет открыть его и записать дополнительную информацию в другой строке. Если файл .txt не существует для нового «Lifter», он создаст .txt и напишет его. В принципе, я не знаю, как создать новый .txt для каждого введенного имени и как его отредактировать, если person .txt уже существует. Как мне это сделать?Редактирование .txt-файла Java

import java.io.IOException; 
import java.io.PrintWriter; 
import java.util.Random; 
import java.util.Scanner; 

public class MeetPrinter { 

    public static void getInfo() { 

     Scanner scanner = new Scanner(System.in); 
     int question; 
     String firstName; 
     String lastName; 
     int squat; 
     int bench; 
     int lift; 
     String meetName; 
     do { 

      System.out.println("Enter first name: "); 
      firstName = scanner.next(); 

      System.out.println("Enter Last Name: "); 
      lastName = scanner.next(); 

      System.out.println("Enter new Meet Name: "); 
      meetName = scanner.next(); 

      System.out.println("Enter max squat weight in kg: "); 
      squat = scanner.nextInt(); 

      System.out.println("Enter max bench press in kg: "); 
      bench = scanner.nextInt(); 

      System.out.println("Enter max deadlift in kg: "); 
      lift = scanner.nextInt(); 

      System.out 
        .println("Enter '1' to enter more lifters or '2' if you are done entering."); 
      question = scanner.nextInt(); 
     } while (question == 1); 

     try{ 
      PrintWriter out = new PrintWriter("output.txt"); 
      Random randomGenerator = new Random(); 
      int randomInt = randomGenerator.nextInt(100000); 
      out.println(lastName + ", " + firstName + " Record #: " + randomInt); 
      out.println(""); 
      String meet = "Meet Name"; 
      String sq = "SQ Max"; 
      String bp = "BP Max"; 
      String sub = "SUB Total"; 
      String dl = "DL Max"; 
      String tot = "Total"; 
      out.printf("%20s %15s %18s %19s %18s %18s",meet ,sq,bp,sub,dl,tot); 
      out.println(""); 
      out.printf("%20s", meetName); 
      out.printf("%10d (%6.2f)", squat, squat * 2.2); 
      out.printf("%10d (%6.2f)", bench, bench * 2.2); 
      float subPounds = (float) ((float)(squat + bench) * 2.2); 
      out.printf("%10d (%6.2f)", squat + bench, subPounds); 
      out.printf("%10d (%6.2f)", lift, lift * 2.2); 
      float tPounds = (float) ((float)(squat + bench + lift) * 2.2); 
      out.printf("%10d (%6.2f)", squat + bench + lift, tPounds); 
      out.close(); 
     }catch(IOException e){ 
      e.printStackTrace(); 
     } 
    } 

} 

ответ

2

Update

изменение

PrintWriter out = new PrintWriter("output.txt"); 

в

FileWriter out = new FileWriter("output.txt", true); 

true расскажет FileWriter для добавления в файл, если он существует, что именно то, что вы хотеть сделать.

вот javadoc для FileWriter.

FileWriter имеет возможность записывать строки, что вы и делаете.

Кроме того, как twain249 предложил, сделать что-то о пути ...

+2

Кроме того, вы должны изменить ' "output.txt"' на полный (или относительный) путь к файлу, потому что он будет искать файл с именем «output.txt» в каталоге, из которого вы запускаете код (обычно это '/ bin'). – twain249

+0

вы havnt ответили, что он должен сделать, чтобы создать новый файл, если он не существует – EnKrypt

+0

@EnKrypt FileOutputStream сделает это автоматически. – MarioDS

1

операция Java Файл

File file = new File("<file name>"); 
BufferedWriter writer = null; 

if(file.exists()){ //Check existence check 
writer = new BufferedWriter(new FileWriter(toFile,true)); 
//bytes will be written to the end of the file rather than the beginning 
}else{ 
file.createNewFile() //creating new file 
writer = new BufferedWriter(new FileWriter(toFile)); 
} 
BufferedWriter writer = new BufferedWriter(writer); 
writer.write(...); 
---or---- 
PrintWriter out 
    = new PrintWriter(new BufferedWriter(writer)); 
out.println(...); 
Смежные вопросы