怎对src同级目录下的properties文件做写入操作,求指教。要相对路径的方式。

时间:2023-02-06 19:57:08
怎对src同级目录下的properties文件做写入操作,求指教。要相对路径的方式。 

package test;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

public class PropertiesUtil {
private static Properties properties = new Properties();

 public static void writeProperties(String filePath, String parameterName, String parameterValue){
        Properties props = new Properties();
        OutputStream fos=null;
        InputStream fis =null;
        try{
            InputStream in = new FileInputStream(filePath);
            props.load(in);
            System.out.println("old=" + props.getProperty(parameterName));
            OutputStream foss = new FileOutputStream(filePath);
            props.setProperty(parameterName, parameterValue);
            props.store(foss,null);
            System.out.println("new=" + props.getProperty(parameterName));
        }catch(IOException e){
            e.printStackTrace();
        }
    }
}


package test;

import java.util.Map;


public class propertiesTest {
public static void main(String[] args) {
PropertiesUtil.writeProperties("test.properties", "ye", "hhhh");
}
}
 


test.properties文件:
ye=yxx2

这样写会报错的:
java.io.FileNotFoundException: test.properties (系统找不到指定的文件。)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:106)
at java.io.FileInputStream.<init>(FileInputStream.java:66)
at test.PropertiesUtil.writeProperties(PropertiesUtil.java:50)
at test.propertiesTest.main(propertiesTest.java:8)

7 个解决方案

#1


InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("test.properties")

#2


引用 1 楼 sgyyz 的回复:
Java code?1InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("test.properties")


没有报错了,但没有改掉诶

#3


在线等,,,求高手指教

#4


引用 1 楼 sgyyz 的回复:
Java code?



1

InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("test.properties")

这种方式已经改掉了只不过改的是class的路径下的test.properties而不是楼主要的src目录下的

#5


如果你要修改src目录下的那么你方法调用的时候传的路径应该是
PropertiesUtil.writeProperties("src/test.properties", "ye", "hhhh");

#6


引用 5 楼 suciver 的回复:
如果你要修改src目录下的那么你方法调用的时候传的路径应该是
PropertiesUtil.writeProperties("src/test.properties", "ye", "hhhh");


为什么加了"src/"就可以了? test.properties不也是在存在"\WebRoot\WEB-INF\classes"路径下吗?

#7


你的方法里面是直接new FileInputStream(filepath)的这个的路径是当前的项目目录不是classes目录

#1


InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("test.properties")

#2


引用 1 楼 sgyyz 的回复:
Java code?1InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("test.properties")


没有报错了,但没有改掉诶

#3


在线等,,,求高手指教

#4


引用 1 楼 sgyyz 的回复:
Java code?



1

InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("test.properties")

这种方式已经改掉了只不过改的是class的路径下的test.properties而不是楼主要的src目录下的

#5


如果你要修改src目录下的那么你方法调用的时候传的路径应该是
PropertiesUtil.writeProperties("src/test.properties", "ye", "hhhh");

#6


引用 5 楼 suciver 的回复:
如果你要修改src目录下的那么你方法调用的时候传的路径应该是
PropertiesUtil.writeProperties("src/test.properties", "ye", "hhhh");


为什么加了"src/"就可以了? test.properties不也是在存在"\WebRoot\WEB-INF\classes"路径下吗?

#7


你的方法里面是直接new FileInputStream(filepath)的这个的路径是当前的项目目录不是classes目录