Почему создается новый файл? - PullRequest
0 голосов
/ 22 апреля 2020

Я сейчас работаю над проектом. Дело в том, что программа предназначена для чтения из существующего файла с именем «Stundenzettel» (путь: «Resources / Stundenzettel.txt)»).

Но как только я создаю объект моего класса "BufferedIO", создается новый файл с тем же путем к файлу, что и "Stundenzettel". Но я не хочу, чтобы этот файл создавался, я хочу, чтобы BufferedWriter записывал в существующий файл.

Так вот мой класс "BufferedIO":

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class BufferedIO {
    public BufferedWriter bufWriter; 
    public BufferedReader bufReader; 
    private String file;

    public BufferedIO(String Speicheradresse) {
        try {
            file = Speicheradresse;
            bufWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file, true))); 

            bufReader = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
        } catch(IOException exc) {
            System.out.println("You are screwed... IOException"); 
        }
    }

    public void resetFile() throws FileNotFoundException {
        bufWriter = new BufferedSchreiber(new OutputStreamWriter(new FileOutputStream(file, false)));
    }
}

Ответы [ 2 ]

0 голосов
/ 22 апреля 2020

Lol обнаружил ошибку. Строка "file" была "Resources / Stundenzettel", но строка должна была быть "Resources / Stundenzettel.txt". Nvm

0 голосов
/ 22 апреля 2020

Оператор new FileOutputStream(file, true) создаст файл, соответствующий пути в file ..., если он еще не существует.

Если вы хотите записать (добавить) в файл если он уже существует, то ваш код должен выглядеть примерно так:

if (java.io.File.exists(file)) {
   bufWriter = new BufferedWriter(new OutputStreamWriter(
               new FileOutputStream(file, true))); 
}

или лучше

java.nio.file.Path path = java.nio.file.Paths.get(file);
if (java.nio.file.Files.isExists(path)) {
    bufWriter = new BufferedWriter(new OutputStreamWriter(
               new FileOutputStream(file, true))); 
}

Стоит также отметить, что открытие буферизованного читателя и буферизованного писателя на тот же файл может привести к проблемам.

...