java检查文本文件是否存在而不覆盖

标签 java printwriter

我想检查一个文本文件是否存在,并设置一个 PrintWriter 来写入它。现在,任何新的 PrintWriter 实例都会覆盖最后一个实例。 我的主要:

TextFileForStatus textFile = new TextFileForStatus();
int startingIndex = 1; 

try{
    String output = textFile.readIndex();
    System.out.println("In file: " + output);
    if(output == null)
    {
        textFile.writeToFile(Integer.toString(startingIndex));
    }
    else {
        System.out.println("output: " + output);
        startingIndex = Integer.parseInt(output);
    }
} catch(ReaderException RE){
    RE.getMessage().toString();
}catch(Exception EX){
    EX.getMessage().toString();
}

以及我为创建文件而创建的类:

public class TextFileForStatus {

    private final String fileName = "status";
    private final String Format =  "UTF-8";
    private BufferedReader reader = null;
    private PrintWriter writer = null;

    public TextFileForStatus() throws FileNotFoundException, UnsupportedEncodingException {
        writer = new PrintWriter(fileName, Format);
        reader = new BufferedReader(new FileReader(fileName));
    }
    public void writeToFile(String currentStatus){
        writer.println(currentStatus);
        System.out.println("writer wrote: "+ currentStatus + " to file");
        writer.flush();
    }
    public String readIndex() throws IOException{
        String indexInFile = "";
        while((indexInFile = reader.readLine())!=null){
            indexInFile += reader.readLine();
        }
        return indexInFile;
    }
}

我可以使用已经存在的文本文件吗?

最佳答案

您可以使用 new File(fileName).exists() 来检查文件是否存在。所以你可能想尝试:

public class TextFileForStatus {

    private final String fileName = "status";
    private final String Format = "UTF-8";
    private BufferedReader reader = null;
    private PrintWriter writer = null;
    private boolean fileExists; // flag

    public TextFileForStatus() throws FileNotFoundException, UnsupportedEncodingException {
        fileExists = new File(fileName).exists();
        writer = new PrintWriter(fileName, Format);
        reader = new BufferedReader(new FileReader(fileName));
    }

    public void writeToFile(String currentStatus) {
        if (fileExists) {
            writer.println(currentStatus);
            System.out.println("writer wrote: " + currentStatus + " to file");
            writer.flush();
        }
    }

    public String readIndex() throws IOException {
        if (!fileExists) return "";

        String indexInFile = "";
        while ((indexInFile = reader.readLine()) != null) {
            indexInFile += reader.readLine();
        }
        return indexInFile;
    }
}

关于java检查文本文件是否存在而不覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33804288/

相关文章:

java - 如何将斯坦福NLPCore 的带注释的输出保存到字符串中?

java - 我怎样才能更好地实现这个逻辑

java - 用于java API的selenium webdriver : findElement produces different results

java - Netty 消息处理程序

java - 将字节从 C++ 传输到 Java 时数据损坏

java - Netbeans:如何创建包含所有库和资源文件的可执行 .jar 文件?

java - 在 Java servlet 中处理之前发送响应

java.lang.NullPointerException PrintWriter

java - 在java中使用JSON读取和写入字符串文件

java 使用 PrintWriter 将模式打印到文件