【问题标题】:How to write ini file using ini4j如何使用ini4j编写ini文件
【发布时间】:2013-02-08 08:31:41
【问题描述】:

我正在使用 ini4j API http://ini4j.sourceforge.net/

到目前为止,我能够使用填充所需字段的 JFileChooser 从 ini 文件中读取;我需要能够获取这些文本字段的内容(作为字符串)并使用 API 将它们写入 ini 文件。

我目前的代码是:

public void writeIniFile() throws IOException{
    JFileChooser saveinijfc = new JFileChooser(currdir);
    int savereturnval = saveinijfc.showSaveDialog(null);
    if (savereturnval == JFileChooser.APPROVE_OPTION){
        File inioutfile = new File(saveinijfc.getSelectedFile(), "");
        Wini ini = new Wini(new File(inioutfile.getAbsolutePath()));

            // [GLOBAL]
            ini.put("GLOBAL", "clientname", getClientnameText());

            // [PREBACKUP]
            ini.put("PREBACKUP", "prebackup-enabled", String.valueOf(getPrebackupenabledSelection()));

            // [OPENVPN]
            ini.put("OPENVPN", "ovpnprofilename", getOvpnprofileText());

            ini.put("OPENVPN", "remotegatewayip", getOpenvpngatewayipText());

            // [NETWORK DRIVE]
            ini.put("NETWORK DRIVE", "drive-letter", getNetworkdriveletterText());

            ini.put("NETWORK DRIVE", "ipofshare", getIpofshareText());

            ini.put("NETWORK DRIVE", "sharename", getSharenameText());

            ini.put("NETWORK DRIVE", "shareusername", getShareusernameText());

            ini.put("NETWORK DRIVE", "sharepassword", getSharepasswordText());

            // [REGISTRY BACKUP]
            ini.put("REGISTRY BACKUP", "registrybackup-enabled", String.valueOf(getRegistrybackupenabledSelection()));

            ini.put("REGISTRY BACKUP", "hklm-software", String.valueOf(getHklmsoftwareenabledSelection()));

            ini.put("REGISTRY BACKUP", "reg-custompath-enabled", getRegistrycustompathenabledSelection());

            ini.put("REGISTRY BACKUP", "reg-custom-path", getRegistrycustompathText());

            // [EMAIL]
            ini.put("EMAIL", "emailenabled", String.valueOf(getEmailenabledSelection()));

            ini.put("EMAIL", "gmailusername", getGmailusernameText());

            ini.put("EMAIL", "gmailpassword", getGmailpasswordText());

            ini.put("EMAIL", "clientemail", getClientemailText());

            // STORE INI FILE
            ini.store();
    }

}

我怀疑我需要创建一些输出流来写入文件,我正在关注本教程http://ini4j.sourceforge.net/tutorial/OneMinuteTutorial.java.html 以供参考。

【问题讨论】:

  • 这里到底有什么问题?不是在写文件吗?抛出异常?细节,细节!
  • @Paolo,Eclipse 抛出此错误:java.io.FileNotFoundException: C:\Users\KaneCharles\2013\KCBS Offsite\testwriteconfig.ini (The system cannot find the file specified)
  • 如果文件已经存在(即覆盖文件),它工作正常,看来我在创建要写入它的文件时遇到了麻烦。我想我可能需要某种输出流?

标签: java api stream output ini4j


【解决方案1】:

为什么不直接打电话:

File inioutfile = new File(saveinijfc.getSelectedFile(), "");
//Insert here.
if(!inioutfile.exists()) {
    if(!inioutfile.createNewFile()) return;
}
Wini ini = new Wini(new File(inioutfile.getAbsolutePath()));

这应该确保文件确实存在,如果不存在,它会成功,如果不能成功,它将退出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-28
    • 2012-02-11
    • 2018-09-20
    • 2014-01-31
    相关资源
    最近更新 更多