我尝试创建一个控制台应用程序来创建文件并将文本写入其中。我在这里做错了什么?
package Writer;
import java.util.*;
import java.io.*;
public class main {
public static void main(String args[]) {
System.out.println("What would you like your SimpleText file name to be?");
Scanner uInputName = new Scanner(System.in);
String fileName = uInputName.nextLine();
File file = new File(fileName);
FileWriter fw = FileWriter;
BufferedWriter Text = new BufferedWriter(fw);
{
System.out.println("What would you like to write in: " + fileName);
Scanner uInputText = new Scanner(System.in);
String fileText = uInputText.nextLine();
fw.write(fileText);
Text.newLine();
}
System.out.println("Okay. File saved.");
}
答案 0 :(得分:0)
这完全非法
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();
}
答案 1 :(得分:0)
首先,让我们从FileWriter fw开始。 fw应该是FileWriter对象,因此,您需要创建一个FileWriter对象。
FileWriter fw = new FileWriter(file);
现在,请注意您可能希望更具体,因此值得检查FileWriter API
中的不同构造函数此外,写入不会THROW和异常,它可能会出现异常(说它会抛出异常,说你的代码总是会失败,在这种情况下,异常处理就是“修补”它。 所以我建议添加一个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();
}
因为垃圾回收器没有关闭流,并且如果在try中抛出异常,那么它将不会到达close()命令,而是在不关闭流的情况下捕获(然后最终)。
答案 2 :(得分:0)
正如其他人所说。在不知道你想要完成什么的情况下,很难知道所有错误的事情。
再次,正如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;
}
}