Groovy/Java:Ini4j在不同的行中为单个参数插入多个值



我正试图使用带有以下代码的ini4j将多个值选项从Groovy添加到我的ini文件中(我尝试了一些变体):

import org.ini4j.Wini 
List valuesList = [ 'val1’, ‘val2’, ‘val3' ] 
( new Wini( new File( "test.ini" ) ) ).with{
     valuesList.each{
          put( 'sectionNa'sectionName','optionName', it)
    }
    store()
}
import org.ini4j.Wini
List valuesList = [ 'val1’, ‘val2’, ‘val3' ]
( new Wini( new File( "test.ini" ) ) ).with{
    Section sectionObject = get( ‘sectionName’ )
    sectionObject .put( 'optionName', ‘val1’ )
    sectionObject .put( 'optionName', ‘val2’ )
    sectionObject .put( 'optionName', ‘val3’ )
    }
    store()
}

我有一个像这样的ini文件:

[sectionName]
optionName = val3

但我想得到:

[sectionName]
optionName = val1
optionName = val2
optionName = val3

你能告诉我如何解决我的问题吗?提前感谢!

更新1

我还在等待更优雅的解决方案。但我在下面创建了直接的ini文件编辑。请给我任何关于它的反馈:

List newLines = []
File currentFile = new File( "test.ini" )
List currentLines = currentFile.readLines()
int indexSectionStart = currentLines.indexOf( 'sectionName' )
(0..indexSectionStart).each{
    newLines.add( currentLines[ it ] )
}
List valuesList = 'val1,val2,val3'.split( ',' )
valuesList.each{
        newLines.add( "optionName = $it" )
}   
( indexSectionStart + 1 .. currentLines.size() - 1 ).each{
    newLines.add( currentLines[ it ] )
}
File newFile = new File( "new_test.ini" )
if ( newFile.exists() ) newFile.delete()
newLines.each {
    newFile.append( it+'n' )
}

只需删除旧文件并重命名新文件即可。我实现它是因为我在标准文件中没有找到任何类似insertLine()的方法

好吧,这是怎么回事:

import org.ini4j.*
List valuesList = [ 'val1', 'val2', 'val3' ] 
new File( "/tmp/test.ini" ).with { file ->
    new Wini().with { ini ->
        // Configure to allow multiple options
        ini.config = new Config().with { it.multiOption = true ; it }
        // Load the ini file
        ini.load( file )
        // Get or create the section
        ( ini.get( 'sectionName' ) ?: ini.add( 'sectionName' ) ).with { section ->
            valuesList.each {
                // Then ADD the options
                section.add( 'optionName', it )
            }
        }
        // And write it back out
        store( file )
    }
}

相关内容

  • 没有找到相关文章

最新更新