A. javaweb 修改properties文件中的属性值
String realPath1 = getServletContext().getRealPath("/");//这样你就得到了 你的CLASS目录 然后再拼装即可 试用于非WAR包
String realPath2 = getServletContext().getResource("/").getPath();//试用于所有
上面的都是获取到了CLASS目录 也就是你工程编译后的目录 然后再根据目录层级拼装即可
注意 web项目部署到服务器后 用你之前的方式是拿不到文件的 因为部署到服务器上面后的目录都变了 而且文件都放入CLASS目录下面了 所以你那错的
B. java 修改properties文件 顺序乱掉
java的Properties类继承自HashTable。HashTable都很熟悉,这是一个存放键值对,基于hash表存储的,所以说顺序也是不固定的。因此只要使用java自带的Properties工具类读写properties文件的都是顺序不可预知的。如果想实现有顺序的方式可以自定义一个类,使用LinkedHashMap做为父类来实现,这样效率就没那么高了。
使用有顺序的键值对的方式存储数据推荐使用jdk中提供的LinkedHashMap。这个工具类是基于链表的形式存储键值对数据。存放的数据和获取的顺序都是一致的。
C. java修改properties文件 丢失内容
我注意到你写的这句FileOutputStream fos=new FileOutputStream(resourceFile);运行时会马上覆盖掉原有的内容,因此你这句话应该移到将键值对载入完成后。
修改如下,测试通过。
/**
*新增或修改资源文件的内容
*
*@paramresourceFile
*资源文件(绝对路径+文件名,不需要.properties后缀)
*@paramkey键
*@paramvalue值
*/
publicstaticvoidsetString(StringresourceFile,Stringkey,Stringvalue){
Propertiesprop=newProperties();
try{
if(resourceFile.indexOf(".properties")==-1){
resourceFile+=".properties";
}
FileInputStreamfis=newFileInputStream(resourceFile);
try{
prop.load(fis);
fis.close();
prop.setProperty(key,value);
FileOutputStreamfos=newFileOutputStream(resourceFile);
prop.store(fos,"CopyrightThcic");
fos.close();
}catch(IOExceptione){
e.printStackTrace();
System.out.println("修改资源文件:"+resourceFile+"异常!msg:"+e.getMessage());
}
}catch(FileNotFoundExceptione){
e.printStackTrace();
System.out.println("无法获得资源文件:"+resourceFile);
}
}
D. java web启动时修改并重新加载properties文件
大兄弟,我这儿有一个,你参考一下,但是输出流问题,没有得到解决。因为src在项目布置到tomcat上会消失的,所以你看看能不能解决?
E. JAVA中如何重新加载.properties文件,使其他引用实时改变
*Spring提供的PropertiesLoaderUtils允许您直接通过基于类路径的文件地址加载属性资源
*最大的好处就是:实时加载配置文件,修改后立即生效,不必重启
*/
privatestaticvoidspringUtil(){
Propertiesprops=newProperties();
while(true){
try{
props=PropertiesLoaderUtils.loadAllProperties("message.properties");
for(Objectkey:props.keySet()){
System.out.print(key+":");
System.out.println(props.get(key));
}
}catch(IOExceptione){
System.out.println(e.getMessage());
}
try{
Thread.sleep(5000);
}catch(InterruptedExceptione){
e.printStackTrace();
}
}
}
F. java web程序注解读取properties文件,每次修改都需要重启服务器,怎么解决
你是不是用了类似maven的管理工具
然后修改的是src下面的,target也要修改才行
G. java怎么用java修改.properties文件键值,文件在java包中。我能读到这个文件。但无法修改
读出来后用set方法修改属性,然后再用Properties 的save方法保存修改 并且覆盖原来的info.properties文件不就行了。不过save方法用的输出流 需要用filewriter写入/com/zst/warning/config/info.properties文件。
web项目应该没问题,如果是java应用程序打成jar包后的话就比较麻烦了。要先解压修改了以后还要再重新打包
H. java修改通过读取连接数据库的properties文件之后如何让其生效
用线程监控文件是否被修改,若修改:
properties文件配置参数在系统中以系统属性存在就直接重设属性
若采用spring,则需要刷新数据源