在文件特定位置写入内容,怎么处理~? a.properties 文件在解析时,按照map键值对的形式处理的,要给system.version赋值,直接put就是了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 要找到这个system.version的位置。你可以用缓冲字符流读properties文件,然后readLine,如果字符串equals("system.version"), replace一下("system.version", "system.version=xxxx"); 不就是properties文件的操作吗,直接用java.util.Properties。//把你的a.properties文件load进来Properties properties=new Properties();InputStream is=new FileInputStream("a.properties");properties.load(is);//把你system.version改成你要的properties.setProperty("system.version","xxxxx");//修改后再保存到a.properties文件中OutputStream os=new FileOutputStream("a.properties");properties.store(os,null);is.close();os.close(); 我现在使用的就是这个方法,但是有几个疑问1.它更新之后会自动在第一行增加更新时间:#Mon Dec 02 15:08:35 CST 2013请问是否可以去掉?而且如果我原来第一行是注释,它会把原注释覆盖,如果原来不是注释,那么它会挤掉原来的第一行,把更新时间放在第一行~! 这样不行啊~!2.它会消除掉原来文件的空行,可以不消除吗?3.它会重新排列我原来文件的顺序,我不希望它改变~!总之就是 只是希望它仅仅更新 system.version= 后面的内容 其余的都不要变~! 因为properties的操作是由hashtable的值进行输出的。注释是可以的去掉的,但是文件的顺序会被改变因为hashtable的是用hash算法排序的并非文件的原内容顺序。它底层就是用io的BufferedWriter将hashtable的值一行一行输出所以原来文件里的空行自然就没了。这个没法改变,如果你要全部的原样输出那只能用RandomAccessFile 因为properties的操作是由hashtable的值进行输出的。注释是可以的去掉的,但是文件的顺序会被改变因为hashtable的是用hash算法排序的并非文件的原内容顺序。它底层就是用io的BufferedWriter将hashtable的值一行一行输出所以原来文件里的空行自然就没了。这个没法改变,如果你要全部的原样输出那只能用RandomAccessFile比如~? 因为properties的操作是由hashtable的值进行输出的。注释是可以的去掉的,但是文件的顺序会被改变因为hashtable的是用hash算法排序的并非文件的原内容顺序。它底层就是用io的BufferedWriter将hashtable的值一行一行输出所以原来文件里的空行自然就没了。这个没法改变,如果你要全部的原样输出那只能用RandomAccessFile比如~?例如测试的a.properties文件内容如下b=agsystem.version=1.0sba=gadfRandomAccessFile raf=new RandomAccessFile("a.properties","rw");//读写模式String str=null;while((str=raf.readLine())!=null){//逐行读取 if(str.startsWith("system.version=")){//发现system.version开头的 long pos=raf.getFilePointer();//获取当前的文件指针//当读取到system.version的时候指针其实已经是末尾并且有换行符了,所以将指针定位到system.version开头 pos=pos-str.length()-"\r\n".length(); raf.seek(pos); raf.writeBytes("system.version=10.0");//修改当前行 raf.close();//关闭 break;//退出其它行不管了 }} 貌似是用java干script干的活。jvm表示蛋疼。 java 线程处理有点问题。 list对象数据互换位置 好奇怪啊,很基础的问题 请问大家一个关于poi写excel文件的问题 求值 Java J2SE /static 和 final 的区别 求:把一个xml格式的配置文件转换为.properties(用Jdom,dom4j) JAVA连接数据库 用JAVA的IO怎么实现图形文件(GIF/JPG)的读写,100分奉送! 有没有什么办法使JB6快一点? 关于unitils做单元测试的问题(100请教) 求高手点拨一个“服务器端登录功能”的“小异常”.
Properties properties=new Properties();
InputStream is=new FileInputStream("a.properties");
properties.load(is);
//把你system.version改成你要的
properties.setProperty("system.version","xxxxx");
//修改后再保存到a.properties文件中
OutputStream os=new FileOutputStream("a.properties");
properties.store(os,null);
is.close();
os.close();
1.它更新之后会自动在第一行增加更新时间:#Mon Dec 02 15:08:35 CST 2013
请问是否可以去掉?而且如果我原来第一行是注释,它会把原注释覆盖,如果原来不是注释,那么它会挤掉原来的第一行,把更新时间放在第一行~! 这样不行啊~!
2.它会消除掉原来文件的空行,可以不消除吗?
3.它会重新排列我原来文件的顺序,我不希望它改变~!
总之就是 只是希望它仅仅更新 system.version= 后面的内容 其余的都不要变~!
这个没法改变,如果你要全部的原样输出那只能用RandomAccessFile
这个没法改变,如果你要全部的原样输出那只能用RandomAccessFile比如~?
这个没法改变,如果你要全部的原样输出那只能用RandomAccessFile比如~?
例如测试的a.properties文件内容如下
b=agsystem.version=1.0sba=gadfRandomAccessFile raf=new RandomAccessFile("a.properties","rw");//读写模式
String str=null;
while((str=raf.readLine())!=null){//逐行读取
if(str.startsWith("system.version=")){//发现system.version开头的
long pos=raf.getFilePointer();//获取当前的文件指针
//当读取到system.version的时候指针其实已经是末尾并且有换行符了,所以将指针定位到system.version开头
pos=pos-str.length()-"\r\n".length();
raf.seek(pos);
raf.writeBytes("system.version=10.0");//修改当前行
raf.close();//关闭
break;//退出其它行不管了
}
}
jvm表示蛋疼。