我想实现的功能:
把用户输入的一个文件路径(字符串格式,如“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();
}
}
}
把用户输入的一个文件路径(字符串格式,如“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();
}
}
}
问题出在这里:FileInputStream fin = new FileInputStream(f); Java API中写道:
FileInputStream public FileInputStream(File file) throws FileNotFoundException
通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的 File 对象 file 指定。
…………
如果指定文件不存在,或者它是一个目录,而不是一个常规文件,抑或因为其他某些原因而无法打开进行读取,则抛出 FileNotFoundException。
之间建立管道,只有建立起了这个流,你的输入文本才能写到ini文件里。
FileInputStream fin = new FileInputStream(f); FileOutputStream fout = new FileOutputStream(f);
还真没这么用过,不清楚会不会有文件锁定的问题,呵呵至于前面的Writer,是不是因为你开始没有哪个指定的文件?inputStream要检测输入源是否存在吧?
File f = new File("d:\\SetPath.ini");
不是要创建新文件?
我开始就不存在SetPath.ini这个文件。我先让他先创建一个文件,再向这个文件内写入我要的值。File f = new File("d:\\SetPath.ini");
不是要创建新文件?另外,为什么inputstream 和 outputstream不能对一个文件用?
这个仅仅是创建一个File对象,你可以用f.exists()来判断它是不是存在对于output来说,存不存在问题不大,不存在会自动创建。
但对于input来说就比较关键了。
File f = new File("d:\\SetPath.ini");,这个方法并不创建文件。
f.createNewFile();这才是创建