黑马程序员技术交流社区
标题:
关于IO读取和写入的问题
[打印本页]
作者:
∏艾力克斯※
时间:
2013-11-9 12:30
标题:
关于IO读取和写入的问题
/**
* 从C盘读一个字符,就往D盘写一个字符
*/
public static void copyFileTest2() {
FileWriter fw = null;
FileReader fr = null;
try {
fw = new FileWriter(path + "RuntimeDemo_copy.txt");// 写入
fr = new FileReader("C:/" + "demo4.txt"); // 读
int ch = 0;
while ((ch = fr.read()) != -1) {
fw.write(ch);
}
System.out.println("写入成功!");
} catch (Exception e) {
e.printStackTrace();
} finally {
if (fr != null) {
try {
fr.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (fr != null) {
try {
fr.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
复制代码
请问,程序正常结束,文件也创建,但是新建文件没有字符内容,这是怎么回事?求解答
作者:
Mr.Z.Lee
时间:
2013-11-9 12:36
public static void copyFileTest2() {
FileWriter fw = null;
FileReader fr = null;
try {
fw = new FileWriter(path + "RuntimeDemo_copy.txt");// 写入
fr = new FileReader("C:/" + "demo4.txt"); // 读
int ch = 0;
while ((ch = fr.read()) != -1) {
fw.write(ch);
fw.flush();
}
System.out.println("写入成功!");
} catch (Exception e) {
e.printStackTrace();
} finally {
if (fr != null) {
try {
fr.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (fr != null) {
try {
fr.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
复制代码
作者:
中关村阿旺
时间:
2013-11-9 12:50
fw.write(ch);这句代码后面应该加上一句:fw.flush();这样你的目的地文件中才会有数据。
因为fw.write(ch);这句代码只是将关联的文件中的数据写入到流中,并没有写入到目标文件中。
你循环调用write()方法,只会将流中的数据循环覆盖,
调用flush()方法,作用是刷新流对象中缓冲的数据,将数据刷到目的地文件中。
你想一个字符一个字符的写入,那么就把fw.flush();写到循环里,读一个字符,写入到目的地文件中一次,你试试,是否成功。
作者:
零下五度的水
时间:
2013-11-9 13:22
fw 没冲流,也没关,数据在缓冲区呆着呢
作者:
楞个里格朗
时间:
2013-11-9 14:44
要刷新一次
/**
* 从C盘读一个字符,就往D盘写一个字符
*/
public static void copyFileTest2() {
FileWriter fw = null;
FileReader fr = null;
try {
fw = new FileWriter(path + "RuntimeDemo_copy.txt");// 写入
fr = new FileReader("C:/" + "demo4.txt"); // 读
int ch = 0;
while ((ch = fr.read()) != -1) {
fw.write(ch);
fw.flush;
}
System.out.println("写入成功!");
} catch (Exception e) {
e.printStackTrace();
} finally {
if (fr != null) {
try {
fr.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (fr != null) {
try {
fr.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
作者:
枫儿
时间:
2013-11-9 18:10
哥们,能把你的流里的数据刷出来到硬盘后再打印写入成功这句话不
作者:
hubby
时间:
2013-11-9 18:28
没有刷新,没有关流。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2