【问题标题】:My program overwrites the file it is writing into, but it shouldn't我的程序覆盖了它正在写入的文件,但它不应该
【发布时间】:2013-09-30 21:29:21
【问题描述】:

我有这个程序:

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 时,为什么会这样做?

【问题讨论】:

    标签: java file append overwrite


    【解决方案1】:

    使用这个构造函数with append parameter

    【讨论】:

      【解决方案2】:
      fil = new PrintWriter(new FileWriter("fugler.txt", true));
      

      把它变成

      fil = new PrintWriter(new FileWriter("fugler.txt", false));
      

      【讨论】:

        【解决方案3】:

        删除程序中的以下行

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

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

        【讨论】:

        • 非常感谢。你是我的上帝。花了这么多时间,终于有了答案……非常感谢!
        猜你喜欢
        • 2011-05-08
        • 2018-10-16
        • 1970-01-01
        • 2022-10-02
        • 2012-04-19
        • 1970-01-01
        • 2021-12-23
        • 2015-05-20
        • 1970-01-01
        相关资源
        最近更新 更多