为什么创建新文件?

问题描述 投票:-1回答:2

我正在研究一个项目。事实是,该程序可以从名为“ 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)));
    }
}
java file jframe bufferedwriter
2个回答
0
投票

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))); 
}

值得注意的是,在同一文件上打开缓冲读取器和缓冲写入器可能会导致问题。


0
投票

大声笑发现错误。字符串“文件”为“ Resources / Stundenzettel”,但字符串应为“ Resources / Stundenzettel.txt”。 Nvm

© www.soinside.com 2019 - 2024. All rights reserved.