日期:2014-05-20  浏览次数:20756 次

请教前辈一IO问题!!!!!!!
import   java.io.*;
public   class   IOTest   {
public   static   void   main(String   []   args){
File   file   =new   File( "E:/IOTest ");
BufferedReader   in   =null;
Writer   out   =null;
try{
in=   new   BufferedReader(new   InputStreamReader(new   FileInputStream(file)));
out   =new   OutputStreamWriter(new   FileOutputStream(file));
out.write( "++++++++++++++++++++++ ");
}catch(IOException   e){
e.printStackTrace();
}
}
}
运行上面的程序时报错:java.io.FileNotFoundException:   E:\IOTest   (系统找不到指定的文件。)

把程序改成如下时:
import   java.io.*;
public   class   IOTest   {
public   static   void   main(String   []   args){
File   file   =new   File( "E:/IOTest ");
if(!file.exists()){
System.out.println( "++++++++ ");
try{
file.createNewFile();
}catch   (IOException   e){
e.printStackTrace();
}
}
BufferedReader   in   =null;
Writer   out   =null;
try{
in=   new   BufferedReader(new   InputStreamReader(new   FileInputStream(file)));
out   =new   OutputStreamWriter(new   FileOutputStream(file));
out.write( "++++++++++++++++++++++ ");
}catch(IOException   e){
e.printStackTrace();
}
}
}
没有报错,但IOTest是空的。求前辈指点一二

------解决方案--------------------
File file =new File( "E:/IOTest "); // 这是一个文件还是一个目录,如果是文件,
得有扩展名才对,如: test.txt
------解决方案--------------------
你确定你电脑的E盘下有IOTest.txt这个文件吗?大小写都符合?
------解决方案--------------------
out.write( "++++++++++++++++++++++ ");
out.flush();
....
out.close();
------解决方案--------------------
1、在out.write( "+++++++++++++++++ ");后面加out.flush();就可以了,因为Writer类是同步的
2、不要忘记在finally中关闭两个流
3、跟.txt没关系,.txt只是windows下确认文本文件的方式,在其他系统中,如:unix,linux中,是没有意义的,只是作为文件名的一部分而已,在windows中即使不是.txt也可以用文本编辑器打开,如记事本
4、建议用PrintWriter代替Writer,因为PrintWriter类有writeUTF()方法可以写字符串,还可以写各种基本类型,不过PrintWriter也是有缓冲的,也需要flush()
------解决方案--------------------
up

楼上正解