Czemu ciągle nadpisuje mi plik jedynką?

0
	///program ma sumować liczby w pliku i zapisywać sumę na końcu pliku.
	public static void sumujIZapisz(String nazwaPlikWe){
		PrintWriter pw=null;
		Scanner read = null;
		int suma=0;
		
		try {
			pw = new PrintWriter(nazwaPlikWe);
			read = new Scanner(new File(nazwaPlikWe));
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
			
		int a;
		while(read.hasNextLine()){
			String t = read.nextLine();
			a = Integer.parseInt(t);
			suma+=a;
		}
		CharSequence arg0 = String.valueOf(suma+1);
		pw.append(arg0);
		pw.close();
	}

Co jest nie tak?Czemu ciągle nadpisuje mi zawartość pliku jedynką?

2

Bo to właśnie robisz? Tzn otwierasz plik do zapisu a nie do appendowania.

1

bo read.hasNextLine() zwraca zawsze false bo ten plik jest pusty (dopiero co go utworzyłeś).

Problem polega na tym, że za dużo chcesz zrobić w jednej funkcji.
Zrób tylko sumowanie:

     public static int sumujStrumientekstowy(InputStream strumien){
        Scanner read = new Scanner(strumien);
        int suma=0;
 
        while(read.hasNextInt()){
            int a = read.nextInt();
            suma+=a;
        }
        return suma;
    }

a potem połącz to innymi funkcjami

1

Jeśli chcesz dopisywać, to zmień klasę PrintWriter na FileWriter.

        FileWriter fw = null;
        ...
        try {
            fw = new FileWriter(nazwaPlikWe,true);
        ...
        fw.write((suma + 1) + "\n");

1 użytkowników online, w tym zalogowanych: 0, gości: 1