这个小代码片段应该输出一个包含文本的文件:
public static void main(String[] args) {
try{
Path gabblePath = Paths.get("C:/Users/AlterionX/Documents/"
+ "NetBeansProjects/File Creator, Function Example/src/file/"
+ "gabble.txt");
Charset cs = Charset.defaultCharset();
Scanner scanner = new Scanner(System.in);
String total = scanner.nextLine();
System.out.println(total);
BufferedWriter writer = Files.newBufferedWriter(gabblePath, cs);
writer.write(total);
System.out.println("total printed");
}catch(IOException ex){
System.out.println("IO Exception");
}
System.exit(0);
}
相反,它会创建并返回一个空白文件。它运行成功,所有其他东西,它只是创建一个空白文件。
我应该关闭扫描仪还是其他东西?
EDIT 我取出扫描仪并将其更改为实际的字符串,仍然无法正常工作。
答案 0 :(得分:0)
尝试使用FileWriter类。
FileWriter fw = new FileWriter(gabblePath);
fw.write(total);
fw.flush();
fw.close();
您只需要输出文件和内容的路径。
答案 1 :(得分:0)
关闭Writer
并确保无条件地执行(即最终阻止)。
public static void main(String[] args) {
BufferedWriter writer = null;
try{
Path gabblePath = Paths.get("C:/Users/AlterionX/Documents/"
+ "NetBeansProjects/File Creator, Function Example/src/file/"
+ "gabble.txt");
Charset cs = Charset.defaultCharset();
Scanner scanner = new Scanner(System.in);
String total = scanner.nextLine();
System.out.println(total);
writer = Files.newBufferedWriter(gabblePath, cs);
writer.write(total);
System.out.println("total printed");
}catch(IOException ex){
System.out.println("IO Exception");
} finally {
if (writer != null) {
try {
writer.close();
}
catch (IOException e) { /* ignore */ }
}
}
System.exit(0);
}
我认为在Java 7或8中最终清理代码中有一种更简洁的方法来处理try / catch,但我还没有使用它,所以我不确定。