1

私は現在、次のようなプロパティファイルをロードしています。

private Properties loadProperties(String filename) throws IOException{
        InputStream in = ClassLoader.getSystemResourceAsStream(filename);
        if (in == null) {
            throw new FileNotFoundException(filename + " file not found");
        }
        Properties props = new Properties();
        props.load(in);
        in.close();
        return props;
    }

ただし、現時点では、ファイルはscr\user.propertiesパスにあります。

しかし、プロパティファイルに書き込みたい場合:

properties.setProperty(username, decryptMD5(password));
        try {
            properties.store(new FileOutputStream("user.properties"), null);
            System.out.println("Wrote to propteries file!" + username + " " + password);

そのコードは、プロジェクトのルートフォルダーレベルで新しいファイルを生成します。

しかし、書き込み/読み取り用のファイルが1つ必要です。

したがって、それをどのように行うのですか?

PS:パスを指定したいのですが、「ファイルの変更は許可されていません...」というメッセージが表示されます。

4

1 に答える 1

2

書き込み中に新しいファイルを作成しようとしているために新しいファイルが作成される理由。最初に、Fileオブジェクトとして書き込みたいuser.propertiesのハンドルを取得してから、書き込みを試みる必要があります。

コードは次の行に沿って何かを見るでしょう

properties.setProperty(username, decryptMD5(password));
try{
    //get the filename from url class
    URL url = ClassLoader.getSystemResource("user.properties");
    String fileName = url.getFile();

    //write to the file
    props.store(new FileWriter(fileName),null);
    properties.store();
}catch(Exception e){
    e.printStacktrace();
}
于 2012-11-10T14:52:51.700 に答える