【问题标题】:appending mat file in java在java中附加mat文件
【发布时间】:2015-06-20 04:35:50
【问题描述】:

我有一个关于 com.jmatio.io 包的问题,​​希望有人能回答。我希望写入一个可能已经存在也可能不存在的 .mat 文件(使用 java)。 如果存在,我想将信息附加到末尾,但如果未创建文件,我想创建一个新文件并将内容添加到该文件中。 我的第二个写是覆盖第一个,但我不希望它这样做。 非常感谢任何建议或解决方案。

【问题讨论】:

    标签: java append mat-file


    【解决方案1】:

    如果您想将多个数组写入一个new 文件,您可以使用MatFileIncrementalWriter 来实现。正如它的 javadoc 中所解释的那样

    一个更新的编写器,允许在编写器的生命周期内逐步添加变量。这对于允许写入大型变量而不必保持超过必要的时间是必要的。

    并且它明确指出您不能附加到现有文件。

    如果您想追加到现有文件,您可能需要

    • 从现有文件中读取变量
    • 使用MatFileIncrementalWriter 将现有变量写回文件
    • 向增量写入器添加新变量

    【讨论】:

    • 感谢您的回复,是的,我使用了 MatFileIncrementalWriter,它对我有用,我现在不再需要附加到新文件,不过感谢您的帮助 :)
    【解决方案2】:

    您需要以追加模式写入,以便将内容追加到文件的末尾而不是覆盖。

    File out = new File("out.mat");
    try(FileWriter fw = new FileWriter(out, true);  // true is for append
        BufferedWriter bw = new BufferedWriter(fw)) {
        // ...
    }
    

    如果文件不存在,则会创建它。

    【讨论】:

    • 感谢您的快速回复。这是我正在使用的几行代码。 "double[] db = new double[] {1.0,2.0,3.0,4.0,5.0,6.0}; MLDouble mlDouble = new MLDouble("double_arr", db, 3 ); ArrayList list = new ArrayList (); list.add( mlDouble ); MatFileIncrementalWriter MW = new MatFileIncrementalWriter(completePath); MW.write(list); double[] newDB = new double[] {7.0,8.0,9.0,10.0,11.0,12.0}; MLDouble mlDouble1 = new MLDouble( "double_arr", db, 3 ); list.add(0, mlDouble ); MW.write(list); "我该如何应用你的答案?
    • 你应该在你的问题中写下这个
    猜你喜欢
    • 1970-01-01
    • 2017-09-28
    • 2012-01-20
    • 1970-01-01
    • 2017-05-31
    • 2010-09-27
    • 2018-12-06
    • 1970-01-01
    • 2015-06-27
    相关资源
    最近更新 更多