黑马程序员技术交流社区

标题: 为什么读取文件读取不出数据? [打印本页]

作者: 方青木    时间: 2014-3-6 13:27
标题: 为什么读取文件读取不出数据?
import java.io.*;
import java.util.*;
class PropertiesText
{
        public static void main(String[] args) throws IOException
        {
                BufferedReader bufr = new BufferedReader(new FileReader("info.txt"));
                BufferedWriter bufw = new BufferedWriter(new FileWriter("info.txt"));
                Properties prop = new Properties();
                for(String str=bufr.readLine(); str!=null; str=bufr.readLine())
                {
                        sop(str);
                        String[] strArr = str.split("=");
                        prop.setProperty(strArr[0],strArr[1]);
                }
                sop(prop);
                prop.setProperty("wangwu","26");
                Set<String> spn= prop.stringPropertyNames();
                for(String key : spn)
                {
                        bufw.write(key+"="+prop.getProperty(key));
                        bufw.newLine();
                        bufw.flush();
                }
                bufw.close();
                bufr.close();
        }
        public static void sop(Object obj)
        {
                System.out.println(obj);
        }
}
sop(str);//这句运行后没有输出。
sop(prop);//这句输出为{}
但是info.txt文件最后被改动了,里面只剩下数据wangwu=26
感觉for内的语句没有运行,循环直接就结束了,但是找不出哪里写错了
作者: 方青木    时间: 2014-3-6 15:40
zengming13 发表于 2014-3-6 13:54
因为FileWriter会把原有文件覆盖掉,你可以使用FileWriter(String fileName, boolean append) 这个构造方法 ...

大哥你们看懂我的意思,我是要把文件中的数据读取出来,修改后重新写入到文件中。
作者: 戚兴海    时间: 2014-3-6 16:48
二楼说的对,确实是这个原因
作者: ╰つ    时间: 2014-3-6 16:51
  1.                   BufferedReader bufr = new BufferedReader(new FileReader("info.txt"));
  2.          
  3.           Properties prop = new Properties();
  4.      
  5.           for(String str=bufr.readLine(); str!=null; str=bufr.readLine())
  6.           {
  7.                   sop(str);
  8.                
  9.                   String[] strArr = str.split("=");
  10.                   prop.setProperty(strArr[0],strArr[1]);
  11.           }
  12.           sop(prop);
  13.           prop.setProperty("wangwu","26");
  14.           Set<String> spn= prop.stringPropertyNames();
  15.           [color=Red]BufferedWriter bufw = new BufferedWriter(new FileWriter("info.txt"));
  16. [/color]          for(String key : spn)
  17.           {
  18.                   bufw.write(key+"="+prop.getProperty(key));
  19.                   bufw.newLine();
  20.                   bufw.flush();
  21.           }
  22.           bufw.close();
  23.           bufr.close();
  24.   }
  25.   public static void sop(Object obj)
  26.   {

  27.           System.out.println(obj);
  28.   }
复制代码


作者: ╰つ    时间: 2014-3-6 16:52
因为BufferedWriter在构造函数的时候就把你的文件覆盖了,所以读取的是空,无法进入循环,还有不解之处欢迎追问
作者: 方青木    时间: 2014-3-6 20:06
zengming13 发表于 2014-3-6 15:48
这是什么原因导致的,你得先搞清楚这个,我知道你的想法,但我不会帮你改代码,你自己思考 ...

谢谢,明白了,竟然是这样,真够蠢得了。多谢啊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2