import java.io.*;
public class FileWriterTest {
public static void main(String[] args) {
try{
FileWriter fw = new FileWriter("e:\\poem.txt");
{ fw.write("锦瑟 - 李商隐\r\n");
fw.write("锦瑟无端五十弦,一弦一柱思华年。\r\n");
fw.write("庄生晓梦迷蝴蝶,望帝春心托杜鹃。\r\n");
fw.write("沧海月明珠有泪,蓝田日暖玉生烟。\r\n");
fw.write("此情可待成追忆,只是当时已惘然。\r\n");
}
}
catch(IOException ioe){
ioe.printStackTrace();
}
}}
编译没错误,但是编译后产生的poem.txt里什么都没有,是什么问题?
还有其中的这段程序为什么要加花括号,不加不行么?
{ fw.write("锦瑟 - 李商隐\r\n");
fw.write("锦瑟无端五十弦,一弦一柱思华年。\r\n");
fw.write("庄生晓梦迷蝴蝶,望帝春心托杜鹃。\r\n");
fw.write("沧海月明珠有泪,蓝田日暖玉生烟。\r\n");
fw.write("此情可待成追忆,只是当时已惘然。\r\n");
}
public class FileWriterTest {
public static void main(String[] args) {
try{
FileWriter fw = new FileWriter("e:\\poem.txt");
{ fw.write("锦瑟 - 李商隐\r\n");
fw.write("锦瑟无端五十弦,一弦一柱思华年。\r\n");
fw.write("庄生晓梦迷蝴蝶,望帝春心托杜鹃。\r\n");
fw.write("沧海月明珠有泪,蓝田日暖玉生烟。\r\n");
fw.write("此情可待成追忆,只是当时已惘然。\r\n");
}
}
catch(IOException ioe){
ioe.printStackTrace();
}
}}
编译没错误,但是编译后产生的poem.txt里什么都没有,是什么问题?
还有其中的这段程序为什么要加花括号,不加不行么?
{ fw.write("锦瑟 - 李商隐\r\n");
fw.write("锦瑟无端五十弦,一弦一柱思华年。\r\n");
fw.write("庄生晓梦迷蝴蝶,望帝春心托杜鹃。\r\n");
fw.write("沧海月明珠有泪,蓝田日暖玉生烟。\r\n");
fw.write("此情可待成追忆,只是当时已惘然。\r\n");
}
写完后 fw.close();
楼主尽量规范点:
FileWriter fw = null;
try{
fw = new FileWriter("e:\\poem.txt");
fw.write("锦瑟 - 李商隐\r\n");
fw.write("锦瑟无端五十弦,一弦一柱思华年。\r\n");
fw.write("庄生晓梦迷蝴蝶,望帝春心托杜鹃。\r\n");
fw.write("沧海月明珠有泪,蓝田日暖玉生烟。\r\n");
fw.write("此情可待成追忆,只是当时已惘然。\r\n");
fw.flush(); //重要数据写完后,可以强制要求flush缓冲区
} catch(IOException ioe){
ioe.printStackTrace();
} finally {
if (fw!=null) fw.close(); // 在finally中确保释放各种资源
}
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;/**
*
* @author Administrator
*/
public class FileTest {
public static void main(String args[]) throws IOException {
FileWriter fw = new FileWriter(new File("D:/a.txt"));
fw.write("锦瑟 - 李商隐\r\n");
fw.write("锦瑟无端五十弦,一弦一柱思华年。\r\n");
fw.write("庄生晓梦迷蝴蝶,望帝春心托杜鹃。\r\n");
fw.write("沧海月明珠有泪,蓝田日暖玉生烟。\r\n");
fw.write("此情可待成追忆,只是当时已惘然。\r\n");
fw.flush();
//fw.close();
}
}不过楼主添加上fw.close();这句会更好更规范的
trycatch的花括号必须,这是捕获异常所需要的;
而你在fw.write()前后的花括号可以不需要,我2楼的例子里面就没有。
关于为什么一片空白,我在2楼已经解释过了,你大概还没理解。为了提升系统IO性能,而不是你写一个字节操作系统就去写一次磁盘,所以IO都是有缓冲区的,而且这个缓冲区往往有几K到几百K不等;那么这就意味着你可能写了很多东西,但是没有要求缓冲区刷新到磁盘(flush),那么这个缓冲区内容最终就会被丢弃。另外,close()函数被调用时,会自动触发flush()动作,所以你没有close()其实是本质问题。
trycatch的花括号必须,这是捕获异常所需要的;
而你在fw.write()前后的花括号可以不需要,我2楼的例子里面就没有。
关于为什么一片空白,我在2楼已经解释过了,你大概还没理解。为了提升系统IO性能,而不是你写一个字节操作系统就去写一次磁盘,所以IO都是有缓冲区的,而且这个缓冲区往往有几K到几百K不等;那么这就意味着你可能写了很多东西,但是没有要求缓冲区刷新到磁盘(flush),那么这个缓冲区内容最终就会被丢弃。另外,close()函数被调用时,会自动触发flush()动作,所以你没有close()其实是本质问题。