public static void setInfoByProperty(String id,String property,String propertyValue) throws Exception{
File file  = getFile(id);
PrintWriter pw = new PrintWriter(file);
Properties ps = new Properties();
ps.setProperty(property,propertyValue);
ps.list(pw);
pw.flush();
pw.close();
}如上面方法代码,是根据id找到文件,再把输入相对属性的值写到文件中,但我这样写,每次录入文件都话刷新了上次录入的,怎么才能把新输入的追加到文件中,而不覆盖旧的内容?

解决方案 »

  1.   

    用BufferedWriter  流
    bunles 这个是文件 BufferedWriter  writer = null;


    try {

    writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(bunles,true)));

    writer.write(“xxxx追加的内容”)); 


    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();

    }finally{
    if(writer != null)
    writer.close();


    }
      

  2.   

    Properties pro = new Properties();
                pro.load(new FileInputStream("readxmllasttime.porperties"));
                for (Enumeration e = pro.propertyNames(); e.hasMoreElements();) {
                    String s = (String) e.nextElement(); // 遍历所有元素
                    if (s.equals(key)) {
                        /**如果键相同则覆盖*/
                        pro.setProperty(key, maxdate.getTime() + "");
                    } else {
    /**否则就原样写入*/
                        pro.setProperty(s, pro.getProperty(s));
                    }
                }
                pro.store(new FileOutputStream("readxmllasttime.porperties"),"描述信息");
      

  3.   

    BufferedWriter wrwr.append()  可以满足要求
      

  4.   

    这样是行,但我这里必须要用Properties这个类来存属性
      

  5.   


    public static void setInfoByProperty(String id,String property,String propertyValue) throws Exception{
    File file  = getFile(id);
    //PrintWriter pw = new PrintWriter(file);
    Properties ps = new Properties();
    ps.load(new FileReader(file));
    for (Enumeration e = ps.propertyNames(); e.hasMoreElements();) {
       String s = (String) e.nextElement(); // 遍历所有元素
       if (s.equals(property)) {/**如果键相同则覆盖*/          
       //ps.setProperty(property,propertyValue);
       } else {/**否则就原样写入*/
       ps.setProperty(property,propertyValue);
       }
            }
    ps.store(new FileWriter(file),"qqq");
    }
    根据你的改成这样,貌似不行!!!
    执行后有文件里面有#qqq和一行时间,但属性没有~~~什么回事?
      

  6.   

    JAVA操作属性文件有很多方法,举个简单例子:
      File file  = getFile(id);        
     FileInputStream fis = new FileInputStream(file);         
    Properties ps = new Properties();
    ps.load(fis);         
    ps.setProperty(property,propertyValue); 
    FileOutputStream fos = new FileOutputStream(file);        
    ps.store(fos, "");               
     os.close(); 
      

  7.   

    RandomAccessFile可以实现对文件的随机访问
    FileWriter可以追加,构造器中指定即可
      

  8.   

    先读进来,再写回去。
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.URL;
    import java.util.Properties;/**
     * 属性文件读写工具
     * @author shanl
     *
     */
    public class ResourceUtil {
    private File configFile = null;
    private Properties prop = null;

    public ResourceUtil(URL url){
    load(url);
    }

    /**
     * 从classpath下查找指定资源<br/>
     * 以类的部署目录为根,
     * 例:conf/config.properties
     * @param res
     * @return
     */
    public static ResourceUtil getInstanceByClasspath(String res){
    URL url = ClassLoader.getSystemResource(res);
    return new ResourceUtil(url);
    }

    /**
     * 从classload下查找指定资源<br/>
     * 以类的部署目录为根,
     * 例:conf/config.properties
     * @param res
     * @return
     */
    public static ResourceUtil getInstanceByClassloader(String res){
    URL url = ResourceUtil.class.getClassLoader().getResource(res);
    return new ResourceUtil(url);
    }

    /**
     * 从配置文件中加载
     * @param url
     */
    private void load(URL url){
    InputStream in = null;

    try{
    prop = new Properties();
    configFile = new File(url.toURI());
    in = new FileInputStream(configFile);
    prop.load(in);
    }catch(Exception ex){
    throw new RuntimeException(ex);
    }finally{
    try{
    if(null!=in) in.close();
    }catch(Exception ex){
    }
    }
    }

    /**
     * 返回某一项属性值
     * @param key
     * @return 返回属性值,如果不存在或没有值则返回""
     */
    public String getProperty(String key){
    return prop.getProperty(key,"");
    }

    /**
     * 设置一项属性值
     * @param key
     * @param value
     */
    public void setProperty(String key, String value){
    prop.setProperty(key, value);
    }

    /**
     * 移除一项
     * @param key
     */
    public void removeProperty(String key){
    prop.remove(key);
    }

    /**
     * 将当前各属性值保存至文件
     */
    public void store(){
    OutputStream out = null;

    try{
    out = new FileOutputStream(configFile);
    prop.store(out, null);
    }catch(Exception ex){
    throw new RuntimeException(ex);
    }finally{
    try{
    if(null!=out) out.close();
    }catch(Exception ex){
    }
    }
    }

    }
      

  9.   

    PrintWriter pr = new PrintWriter(new FileOutputStream(new File("c:/a.txt"),false),true);
      

  10.   

    PrintWriter pr = new PrintWriter(new FileOutputStream(new File("c:/a.txt"),true),true); 属性合并自己搞了