0

我有这个程序:

import java.util.*;
import java.io.*;
public class Oblig2 {

public static void main (String[] args) {
final Scanner input = new Scanner (System.in);
int menyvalg=0;
Meny menyen = new Meny();   
menyen.meny(); 
}
}   
//Selve menyen til programmet i en egen klasse.

class Meny {

PrintWriter fil;
Scanner input = new Scanner (System.in);    

public void meny() {
try{
    fil=new PrintWriter(new FileWriter("fugler.txt"));
} catch (IOException e) {
    System.out.println("Filen finnes ikke");
} 


int menyvalg=0;
int menykall=1; 
//Menyen vil her bli repetert helt til en taster inn 4 og endrer menykall til 0.
do{
    //Selve menyen vil bli repetert helt til brukeren velger en av menyens alternativer.
    do{
    System.out.println("====== Meny for registrering av fugleobservasjoner =====");

    System.out.println("\n1. Registrer en fugleobservasjon");
    System.out.println("2. Skriv ut alle fugleobservasjoner av en type");
    System.out.println("3. Skriv ut alle fugleobservasjoner på ett bestemt sted");
    System.out.println("4. Avslutt systemet");

    System.out.println("\nVennligst velg en aksjon: ");
    menyvalg = input.nextInt();

        } while(menyvalg < 1 || menyvalg > 4);

    switch (menyvalg){
    case 1: registrering();
    break;
    case 2:
    case 3:
        case 4:menykall=0;
        }
    }while(menykall>=1); 
  }

void registrering () {

System.out.println("Velkommen til registreringen av fugleobservasjoner.");
System.out.println("Begynner registreringen (Lagrer seg i filen fugler.txt): ");

    try { 
    fil = new PrintWriter(new FileWriter("fugler.txt", true));

    System.out.println("\nVennligst tast inn fugletypen: ");
        String fugletype = input.next();
        fil.write(fugletype + ","); 

    System.out.println("Tast inn fuglens kjonn (M/H/X): ");
    char fuglekjonn = input.next().charAt(0);
    fil.write(fuglekjonn + ",");

    System.out.println("Tast inn observasjonslokasjon: ");
    String lokasjon = input.next();
    fil.write(lokasjon + ",");

    System.out.println("Tast inn dato for observasjon (Som en string på formen mai2012): ");
    String dato = input.next();
    fil.write(dato);

    fil.close();
    }catch(Exception e){
    System.out.println("Åpning av fil feilet");
    }
  }
 }

当我运行它时,然后通过案例 1,这是一个用于将信息注册到名为 fugler.txt 的 .txt 文件中的脚本。问题是每次我在其中注册一只新鸟时,我都希望它在文件末尾得到很好的和甜美的放置。但事实并非如此。它会覆盖整个文件。当我在文件打开的末尾放置 true 时,为什么会这样做?

4

3 回答 3

1

删除程序中的以下行

try{
    fil=new PrintWriter(new FileWriter("fugler.txt"));
} catch (IOException e) {
    System.out.println("Filen finnes ikke");
} 

因为它每次执行都会创建一个新文件。

于 2013-09-25T11:56:46.087 回答
0

将此构造函数与附加参数一起使用

于 2013-09-25T10:36:27.683 回答
0
fil = new PrintWriter(new FileWriter("fugler.txt", true));

把它变成

fil = new PrintWriter(new FileWriter("fugler.txt", false));
于 2013-09-25T11:19:14.490 回答