我试图制作一个控制台应用程序,用于创建文件并向其中写入文本。我在这里做错了什么?如何写入文件
如何写入文件
回答
这是完全非法
FileWriter fw = FileWriter;
你可能想这
BufferedWriter Text = new BufferedWriter(new FileWriter(file));
你有一个不必要的代码块
{ }
你的代码会抛出
IOExcpeption
,所以你有两个选择。无论是public static void main(String[] args) throws IOException { }
或者
try { BufferedWriter Text = new BufferedWriter(new FileWriter(file)); .... Text.write(inputText); Text.close(); } catch (IOException ex) { ex.printStackTrace(); }
首先,让我们的FileWriter FW开始。 fw应该是一个FileWriter对象,因此您需要创建一个FileWriter对象。
FileWriter fw = new FileWriter(file);
现在,请注意您可能要更具体,因此是值得一试的FileWriter API
而且不同的构造函数,文字不会抛出和异常,它可能会抛出异常(说它会抛出一个异常,说你的代码总是会失败,并且在这种情况下,异常处理是“补丁”它 所以我建议添加一个catch子句,但是要记住,你必须总是自己关闭编写器(Java除非另有规定,否则不这样做),因此,您需要try with resource
try (FileWriter fw = new FileWriter(file);
BufferedWriter bw = new BufferedWriter(fw)){
....
writer.write(inputText);
} catch (IOException ex) {
ex.printStackTrace();
}
,或者添加一个finally从句
FileWriter fw = new FileWriter(file);
BufferedWriter writer = new BufferedWriter(fw);
try {
....
writer.write(inputText);
} catch (IOException ex) {
ex.printStackTrace();
} finally{
writer.close();
fw.close();
}
因为垃圾收集器不会关闭流,如果异常里面抛出的尝试,那么它不会达到接近()命令,而是去捕捉(然后最终),而不关闭流。
正如其他人所说。不知道你究竟想要完成什么,就很难知道所有错误的东西。
再次,作为PopoFibo提到,这可能代表了大多数,似乎是语法不正确的事情是:
FileWriter fw = FileWriter;
因此而不是列出什么可能是错误的,这里有一个例子可以帮助你。
在第一行中,您可以在控制台中输入您指定的文件名 - 就像您似乎想要做的那样。
您输入到控制台的每个后续行都写入该文件。输入空行将终止输入。
public class Program {
public static void main(String[] args) {
System.out.println("Enter file name:");
Scanner input = new Scanner(System.in);
String fileName = null;
while (fileName == null) {
if (input.hasNextLine()) {
fileName = input.nextLine();
}
}
try {
FileWriter fw = new FileWriter(fileName);
String newLine = System.getProperty("line.separator");
System.out.println("Enter lines (enter empty line to terminate):");
String line = null;
while (true) {
if (input.hasNextLine()) {
line = input.nextLine();
if (isTerminatingEntry(line)) {
break;
}
fw.write(line + newLine);
}
}
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
input.close();
}
private static boolean isTerminatingEntry(String line) {
// add some condition that will cause you to stop reading input
// in this example, empty line will terminate the input
return line.length() == 0;
}
}
我不知道如何回答编辑,但Elayeek编辑的内容不正确,因为'finally中的'fw.close()'没有它自己的try/catch不会编译。我把'fw.close()'放在尝试结束的地方来简化事情,并且假设'FileWriter fw = new FileWriter(fileName)'之后不会有例外,直到try块结束。如果我需要更健壮的东西,我可能会像[this](http://stackoverflow.com/a/2699270/520229)或像[this](http://stackoverflow.com/a/2699273/520229) 。 – mrzli
- 1. 如何写入plist文件?
- 2. 如何写入C#文件
- 3. AIR - 如何写入文件
- 4. PHP - 如何写入文件?
- 5. 如何写入文件C
- 6. OCaml如何写入文件?
- 7. 如何将文件写入文件?
- 8. 如何通过使用Vbscript写入和写入文本文件
- 9. 如何写入文本文件
- 10. 如何写入多行文本文件?
- 11. 如何写入文本文件Java
- 12. 如何将文本写入XML文件?
- 13. 如何将Jsonresult写入文本文件?
- 14. 如何将文本写入log4net文件
- 15. 如何让BufferedWriter写入文本文件?
- 16. 如何将ArrayList写入文本文件?
- 17. 如何写入文本文件
- 18. 如何使用导入从文件写入另一个文件?
- 19. 写入文件
- 20. 写入文件
- 21. 写入文件
- 22. 写入文件
- 23. 写入文件
- 24. 写入文件
- 25. 写入文件?
- 26. 你如何写入缓冲区,然后写入文件
- 27. 如何在使用Python写入文件时写入新行?
- 28. 如何在内存中写入文件或在Lambda aws中写入文件?
- 29. 如何读取和写入文件
- 30. 如何写入日志文件?
问题是什么? – Kick
该代码甚至不会编译。顺便说一句,你没有关闭文件。 – m0skit0
其中之一,你需要抛出一个'IOException'或'try/catch'你的文件访问代码。 –