【发布时间】:2019-10-10 14:38:59
【问题描述】:
我有一个名为 File.java 的简单类文件,其中包含 3 个函数:createFile、writeContent 和必需的 main 作为驱动程序:
import java.io.*;
class CreateFile {
public static boolean createFile(File file, String fileName) throws IOException {
if (file.createNewFile()){
System.out.println(fileName + ": File created successfully!");
return false;
} else {
System.out.println(fileName + ": File already existing!");
return true;
}
}
public static void writeContent(String fileName, String fileContent, boolean append) throws IOException {
if (append = false) {
BufferedWriter writer = new BufferedWriter(new FileWriter(fileName, false));
} else {
BufferedWriter writer = new BufferedWriter(new FileWriter(fileName, true));
}
writer.write(fileContent);
writer.close();
}
public static void main(String[] args) throws IOException {
String fileName = "file.txt";
File file = new File(fileName);
boolean append = createFile(file, fileName);
String fileContent = "Hello, this is a test";
writeContent(fileName, fileContent, append);
}
}
问题在于函数 writeContent,它在最后一行被调用。有一个基本的if条件,检查写入过程是否需要追加到文件中(我知道这不是必需的,但我还在测试,所以请多多包涵)。
我收到一条错误消息,提示编译器找不到符号 writer,这意味着 BufferedWriter writer 是在检查 if 之前 创建的健康)状况。这正是我不明白的:为什么不事先执行 if 条件?
如果我在 if 和 else 语句中包含写入命令,它会很好地工作,但这会导致代码冗余,这是我试图规避的:
public static void writeContent(String fileName, String fileContent, boolean append) throws IOException {
if (append = false) {
BufferedWriter writer = new BufferedWriter(new FileWriter(fileName, false));
writer.write(fileContent);
writer.close();
} else {
BufferedWriter writer = new BufferedWriter(new FileWriter(fileName, true));
writer.write(fileContent);
writer.close();
}
}
我确信我只是对一些基本而简单的事情感到迟钝 - 你介意在这里给我一个提示吗?
【问题讨论】:
-
if (append = false) {应该是if (append == false) {(两个等号)。为了避免这个问题,只需写if(!append) -
if (append = false)是一个赋值,并且永远是正确的。你想改写if (!append) -
谢谢!通过,这似乎不是我的代码中唯一的缺陷,因为错误仍然存在......
-
我建议您在
if条件之外声明BufferedWriter并在其中为其分配一个值。 -
很少有充分的理由明确比较 Java 中的
true和false。
标签: java if-statement