A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 方青木 中级黑马   /  2014-3-6 13:27  /  979 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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内的语句没有运行,循环直接就结束了,但是找不出哪里写错了

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

5 个回复

倒序浏览
zengming13 发表于 2014-3-6 13:54
因为FileWriter会把原有文件覆盖掉,你可以使用FileWriter(String fileName, boolean append) 这个构造方法 ...

大哥你们看懂我的意思,我是要把文件中的数据读取出来,修改后重新写入到文件中。
回复 使用道具 举报
二楼说的对,确实是这个原因
回复 使用道具 举报
  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.   }
复制代码

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

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

谢谢,明白了,竟然是这样,真够蠢得了。多谢啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马