在java中更新具有键值形式的值的文件



我需要更新一个包含键值形式的值的文件(只有一个特定的行)。

app.num_hosts=4
app.resourceid=broker0

我计划读取map中的所有文件,然后修改特定字段并重写文件。这是更新文件的好方法吗?我可以使用哪个API将映射写入文件?

通过搜索现有的问题,我找不到一种方法可以在不重写整个文件的情况下更新单行。

听起来您实际上想使用java.util.properties库。

public static void main(String[] args) {
    Properties prop = new Properties();
    OutputStream output = null;
    try {
        //load the file into properties object
        FileInputStream input = new FileInputStream("config.properties");    
        prop.load(input);
        input.close();
        // set the properties value
        output = new FileOutputStream("config.properties");
        prop.setProperty("app.num_hosts", "4");
        prop.setProperty("app.resourceid", "broker0");
        prop.store(output, null);

    } catch (IOException io) {
        io.printStackTrace();
    } finally {
        if (output != null) {
            try {
                output.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

这篇博文进一步概述了它,但是你要做的是首先读取属性文件,进行更新,然后把它写回来。

一个Java属性选项

否则,您可以使用IO Api并手动更新它,如下所示:

1)创建一个映射,其中包含要在文件中更新的键和值。

HashMap<String, String> replaceValesMap = new HashMap<String, String>();

2)从path读取文件,因为它给了你真正的路径,即war/fileName.layout

String filepath = getServletContext().getRealPath("fileName.layout");

3)创建一个方法,读取文件并替换值,返回修改后的字符串。

public static String getreportPdfString(HashMap<String, String> replaceValesMap,String fileppath){
    String generatedString = "";
     File file = new File(fileppath);
        StringBuffer strContent = new StringBuffer("");
        FileInputStream fin = null;
        try {
          fin = new FileInputStream(file);
          int ch;
        while ((ch = fin.read()) != -1)
          strContent.append((char) ch);
          fin.close();
        } catch (Exception e) {
          System.out.println(e);
        }
       String fileString= strContent.toString();
       for (Map.Entry<String, String> entry : replaceValesMap.entrySet()) {
           fileString = StringUtils.replace(fileString, entry.getKey(),entry.getValue());
        }
    return fileString;
}
4)最后写入文件:
try (PrintStream out = new PrintStream(new FileOutputStream("fileName.layout"))) {
    out.print(text);
}

相关内容

  • 没有找到相关文章

最新更新