首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

怎么用io写文件追加内容

2012-12-21 
如何用io写文件追加内容?public static void setInfoByProperty(String id,String property,String proper

如何用io写文件追加内容?


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找到文件,再把输入相对属性的值写到文件中,但我这样写,每次录入文件都话刷新了上次录入的,怎么才能把新输入的追加到文件中,而不覆盖旧的内容?
[最优解释]


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"),"描述信息");

[其他解释]
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();
 
[其他解释]
先读进来,再写回去。


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){
}
}
}

}


[其他解释]
PrintWriter pr = new PrintWriter(new FileOutputStream(new File("c:/a.txt"),true),true); 

属性合并自己搞了
[其他解释]
用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();


}


[其他解释]
BufferedWriter wr

wr.append()  可以满足要求
[其他解释]

引用:

Java code



123456789101112131415

Properties pro = new Properties();             pro.load(new FileInputStream("readxmllasttime.porperties"));             for (Enumeration e = pro.propertyNames……


+1
[其他解释]
引用:
用BufferedWriter  流
bunles 这个是文件
Java code123456789101112131415161718192021222324BufferedWriter  writer = null;  try {                 writer = new BufferedWriter(new OutputStreamWriter(……

这样是行,但我这里必须要用Properties这个类来存属性
[其他解释]
引用:
Java code123456789101112131415Properties pro = new Properties();            pro.load(new FileInputStream("readxmllasttime.porperties"));            for (Enumeration e = pro.propertyNames(……


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和一行时间,但属性没有~~~什么回事?
[其他解释]
RandomAccessFile可以实现对文件的随机访问
FileWriter可以追加,构造器中指定即可
[其他解释]
来学习学习了。
[其他解释]
PrintWriter pr = new PrintWriter(new FileOutputStream(new File("c:/a.txt"),false),true);

热点排行