Java固定宽度文件格式读/写库

Java固定宽度文件格式读/写库,java,file,fixed-length-record,Java,File,Fixed Length Record,我正在寻找一个好的Java库,它可以轻松地读/写固定宽度的文件。需要维护遗留系统,即使用COBOL需要文件 非常感谢您的任何建议 谢谢。我会使用ByteBuffer,可能是内存映射文件。这允许读/写大端或小端的基元类型。此选项最适用于固定宽度的二进制数据 对于固定宽度的文本,可以使用BufferedReader.readLine()和String.substring(from,to)来获取所需的字段。要输出固定宽度的字段,可以使用PrintWriter.printf(格式,字段…)查看 用于从

我正在寻找一个好的Java库,它可以轻松地读/写固定宽度的文件。需要维护遗留系统,即使用COBOL需要文件

非常感谢您的任何建议


谢谢。

我会使用ByteBuffer,可能是内存映射文件。这允许读/写大端或小端的基元类型。此选项最适用于固定宽度的二进制数据

对于固定宽度的文本,可以使用
BufferedReader.readLine()
String.substring(from,to)
来获取所需的字段。要输出固定宽度的字段,可以使用PrintWriter.printf(格式,字段…)

查看

  • 用于从Java读取/写入cobol文件的库,支持各种cobol方言和格式
  • 读取Cobol文件
  • 处理cobol ata的库
  • 将Cobol文件转换为Xml

您还可以查看Fixedformat4j:


这正是该库的目的,它是一种基于模式的方法:

  • 允许您指定一个架构,通过该架构可以解析或生成固定宽度的文本。还执行一些基本的类型检查和类型转换
  • 还有一个提到的其他库的列表可能对您有所帮助
    • 解析/写入固定宽度输入(以及CSV和TSV)。它有很多你可以使用的功能

      样本输入:

      YearMake_Model___________________________________Description_____________________________Price___
      1997Ford_E350____________________________________ac, abs, moon___________________________3000.00_
      1999ChevyVenture "Extended Edition"______________________________________________________4900.00_
      1996Jeep_Grand Cherokee__________________________MUST SELL!
      air, moon roof, loaded_______4799.00_
      1999ChevyVenture "Extended Edition, Very Large"__________________________________________5000.00_
      _________Venture "Extended Edition"______________________________________________________4900.00_
      
      代码如下:

      FixedWidthFieldLengths lengths = new FixedWidthFieldLengths(4, 5, 40, 40, 8);
      FixedWidthParserSettings settings = new FixedWidthParserSettings(lengths);
      //sets the character used for padding unwritten spaces in the file
      settings.getFormat().setPadding('_');
      
      // creates a fixed-width parser with the given settings
      FixedWidthParser parser = new FixedWidthParser(settings);
      // parses all rows in one go.
      List<String[]> allRows = parser.parseAll(new FileReader(yourFile));
      

      披露:我是这个图书馆的作者。它是开源和免费的(Apache V2.0许可证)。

      这里也有人问:我最终使用了BeanIO,但感谢您的帮助!让我指出了正确的方向。这是一个非常好的解析器,但它不允许您从内部java结构转到固定宽度文件,即它只是一个读取器,而不是一个写入器。@alianos您似乎没有尝试固定宽度写入器。请在此查看一些示例:
      [Year, Make, Model, Description, Price]
      [1997, Ford, E350, ac, abs, moon, 3000.00]
      [1999, Chevy, Venture "Extended Edition", null, 4900.00]
      [1996, Jeep, Grand Cherokee, MUST SELL!
      air, moon roof, loaded, 4799.00]
      [1999, Chevy, Venture "Extended Edition, Very Large", null, 5000.00]
      [null, null, Venture "Extended Edition", null, 4900.00]