关于io,编译运行都正常,但是还差一点点才达到目的呀

zhushoujun 2009-11-13 12:19:53
import java.io.*;
public class TestTransForm2 {
public static void main(String args[]) throws Exception{
InputStreamReader isr =
new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);

FileWriter fw=new FileWriter("d:/fw.txt");
BufferedWriter bw= new BufferedWriter(fw);


String s = null;
try {
s = br.readLine();
while(s!=null){
if(s.equalsIgnoreCase("exit")) break;
System.out.println(s);
bw.write(s);
s = br.readLine();
}
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} /*

想通过键盘向fw文件里写东西,结果fw文件里什么也没有,


*/
...全文
131 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
skyair2004 2009-11-14
  • 打赏
  • 举报
回复
while循环出不来噢 你的条件问题
LPZLSDJF 2009-11-14
  • 打赏
  • 举报
回复
关闭所有的管道 不关闭是写不进去的
zhushoujun 2009-11-14
  • 打赏
  • 举报
回复
好像只用flush 或close都可以吧,哈哈
qqqwwwqw 2009-11-13
  • 打赏
  • 举报
回复
bw.flush();
bayougeng 2009-11-13
  • 打赏
  • 举报
回复
如果按照你的写法,程序无限循环,你只能通过eclipse上的红色小方块强行终止程序。
这样的话,实际上并没有运行while后面的代码,直接跳出了。
所以你在while后面写关闭是没用用的。
另外,你只关闭了读入流,并没有关闭输出流。所以,当然就不会有将内容写入到文件的处理。
所以我帮你做了上面的调整。
bayougeng 2009-11-13
  • 打赏
  • 举报
回复
while (!"exit".equals(s)) {
bw.close();
bayougeng 2009-11-13
  • 打赏
  • 举报
回复
flush不是问题。即使不flush,在close之前也会自动进行flush的。
public class TestTransForm2 {
public static void main(String args[]) throws Exception {
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);

FileWriter fw = new FileWriter("d:/fw.txt");
BufferedWriter bw = new BufferedWriter(fw);

String s = null;
try {
s = br.readLine();
while (!"exit".equals(s)) {
if (s.equalsIgnoreCase("exit"))
break;
System.out.println(s);
bw.write(s);
s = br.readLine();
}

br.close();
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
qjcslgnhwayagain 2009-11-13
  • 打赏
  • 举报
回复
如果你写的数据太小的时候,是要用flush一下的,因为数据在缓冲区里,还没写出去
jsjw18 2009-11-13
  • 打赏
  • 举报
回复
在使用流这一块时刻要注意flush,不然,保存在内存中的信息不能及时的输入到文件中,特别是循环的最后一次。
pheonixliu 2009-11-13
  • 打赏
  • 举报
回复
循环是死的吧 readLine()不就是读一行么?s!=null恒为 true 不要循环 试一下
 
import java.io.*;
public class TestTransForm2 {
public static void main(String args[]) throws Exception{
InputStreamReader isr =new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
FileWriter fw=new FileWriter("d:/fw.txt");
BufferedWriter bw= new BufferedWriter(fw);
String s = null;
try {
s = br.readLine();
// while(s!=null){
// if(s.equalsIgnoreCase("exit")) break;
// System.out.println(s);
// bw.write(s);
//// s = br.readLine();
// }
System.out.println(s);
bw.write(s);
br.close();
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
closewbq 2009-11-13
  • 打赏
  • 举报
回复
bw.flush();
hf_0002007 2009-11-13
  • 打赏
  • 举报
回复
应该写一个while(true)循环 再做一个跳出循环点,不然一次就结束了
JamnyXie 2009-11-13
  • 打赏
  • 举报
回复
在br.close();前面写上 bw.flush();
这是因为你没有对数据进行输出到文件的操作。查查API看这个方法就明白了

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧