我想实现的功能:
把用户输入的一个文件路径(字符串格式,如“c:\windows”),存入一个ini文件,然后可以在别的窗口读取这个ini文件中的路径(“c:\windows”)。我编了一个测试程序,程序编译运行都是正常的。但是 如果没有下面buffer这段,就说找不到文件路径。。这是为什么???
     BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(f));
bufferedWriter.write(text);
bufferedWriter.close();
这一段是什么作用呢?
代码如下:----------------------------------------------------
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Properties;/**
 *
 * @author Administrator
 */
public class TestWriteProperties { public static void main(String args[]) {        File f = new File("d:\\SetPath.ini");
     String text = "This is what you want to write.";
try{
//如果没有buffer这段,就说找不到文件路径。。这是为什么???
     BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(f));
bufferedWriter.write(text);
bufferedWriter.close();
FileInputStream fin = new FileInputStream(f);FileOutputStream fout = new FileOutputStream(f);Properties proc = new Properties();   
proc.load(fin);   
proc.setProperty("name", "123");
proc.store(fout,"This is comment");
System.out.println(proc.getProperty("name"));
fout.close();
fin.close();}
catch (IOException e) {
e.printStackTrace();
}
 }
}

解决方案 »

  1.   

    buffer一段目的为了生成"d:\\SetPath.ini"文件,如果没有那个文件则会报错。
    问题出在这里:FileInputStream fin = new FileInputStream(f); Java API中写道:
    FileInputStream public FileInputStream(File file) throws FileNotFoundException
    通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的 File 对象 file 指定。 
    …………
    如果指定文件不存在,或者它是一个目录,而不是一个常规文件,抑或因为其他某些原因而无法打开进行读取,则抛出 FileNotFoundException。 
      

  2.   

    那一段是在输入的文本 String text = "This is what you want to write." 与 d:\\SetPath.ini
    之间建立管道,只有建立起了这个流,你的输入文本才能写到ini文件里。
      

  3.   

    晕,你太狠了,居然同时对一个文件创建流输入跟输出流
    FileInputStream fin = new FileInputStream(f); FileOutputStream fout = new FileOutputStream(f); 
    还真没这么用过,不清楚会不会有文件锁定的问题,呵呵至于前面的Writer,是不是因为你开始没有哪个指定的文件?inputStream要检测输入源是否存在吧?
      

  4.   

    可这个bufferwriter已经close了啊?我先让他先创建一个文件,再向这个文件内写入我要的值。
     File f = new File("d:\\SetPath.ini"); 
    不是要创建新文件?
      

  5.   


    我开始就不存在SetPath.ini这个文件。我先让他先创建一个文件,再向这个文件内写入我要的值。File f = new File("d:\\SetPath.ini"); 
    不是要创建新文件?另外,为什么inputstream 和 outputstream不能对一个文件用?
      

  6.   

    File f = new File("d:\\SetPath.ini");
    这个仅仅是创建一个File对象,你可以用f.exists()来判断它是不是存在对于output来说,存不存在问题不大,不存在会自动创建。
    但对于input来说就比较关键了。
      

  7.   


     File f = new File("d:\\SetPath.ini");,这个方法并不创建文件。
      

  8.   

             File f = new File("c:\\aa.txt");
             f.createNewFile();这才是创建