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是空的。求前辈指点一二

解决方案 »

  1.   

    File file =new File("E:/IOTest");    // 这是一个文件还是一个目录,如果是文件,
                                             得有扩展名才对,如: test.txt
      

  2.   


    我把IOTest改成了IOTest.txt结果还是一样
      

  3.   

    你确定你电脑的E盘下有IOTest.txt这个文件吗?大小写都符合?
      

  4.   

    out.write("++++++++++++++++++++++");
    out.flush();
    ....
    out.close();
      

  5.   

    在out.write("++++++++++++++++++++++");下面加上刷新和关闭该字符流的语句试试。
    out.flush();
    out.Close();
      

  6.   

    1、在out.write("+++++++++++++++++");后面加out.flush();就可以了,因为Writer类是同步的
    2、不要忘记在finally中关闭两个流
    3、跟.txt没关系,.txt只是windows下确认文本文件的方式,在其他系统中,如:unix,linux中,是没有意义的,只是作为文件名的一部分而已,在windows中即使不是.txt也可以用文本编辑器打开,如记事本
    4、建议用PrintWriter代替Writer,因为PrintWriter类有writeUTF()方法可以写字符串,还可以写各种基本类型,不过PrintWriter也是有缓冲的,也需要flush()