3
A
回答
2
我会使用ByteBuffer,可能与内存映射文件。这允许以大或小的字节读/写原始类型。该选项最适合固定宽度的二进制数据。
对于固定宽度文本,您可以使用BufferedReader.readLine()
和String.substring(from, to)
来获取所需的字段。要输出固定宽度的字段,您可以使用PrintWriter.printf(format, fields ...)
。
1
2
你也可以看看Fixedformat4j:http://fixedformat4j.ancientprogramming.com/
这是该库的确切目的
1
基于模式的方法:
- JSaPar允许您指定的模式,通过它可以解析或生成固定宽度的文本。也做一些基本的类型检查和类型转换。
4
uniVocity-parsers解析/写入固定宽度输入(以及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));
输出:
[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]
披露:我是这个库的作者。它是开放源代码和免费的(Apache V2.0许可证)。
相关问题
- 1. Octave/Matlab - 读取固定宽度文件
- 2. 固定宽度格
- 3. 阅读固定格式文本文件
- 4. 如何使用awk解析固定宽度(NACHA)文件格式?
- 5. 为什么固定宽度文件格式仍在使用中?
- 6. Pentaho勺 - 验证固定宽度输入文件格式
- 7. 保持在格文本固定宽度
- 8. 带固定宽度列的表格 - 不指定表格宽度
- 9. Java固定字段文件格式
- 10. 从文本文件中读取多行固定宽度记录
- 11. 从文本文件中读取固定宽度记录
- 12. 从excel中写入固定宽度的文本文件vba
- 13. CSS - 固定宽度的跨度/每格
- 14. 分析多行固定宽度文件
- 15. 解析固定宽度的文件
- 16. 将固定宽度文件读入数组
- 17. Python Pandas,将DataFrame写入固定宽度文件(to_fwf?)
- 18. 在java中编写一个带有固定宽度字段的文件
- 19. 固定宽度和高度条码PDF417格式
- 20. fancybox2固定宽度
- 21. 使用Java和XML模板处理固定宽度文件(JDOM)
- 22. 读取固定宽度和缺失值的表格数据
- 23. 固定头/可变宽度的表格
- 24. 维护表格宽度固定
- 25. 3格,一个固定宽度
- 26. 跨度的固定宽度?
- 27. UILabel固定宽度/固定高度获取文本编号
- 28. 固定宽度div div宽度div?
- 29. 如何使用固定宽度格式化文本时保留空格?
- 30. 固定宽度文件到sql server宽表
也问在这里:http://stackoverflow.com/questions/7482021/tactics-for-parsing-fixed-width-text-log-in-java – wrschneider 2011-12-29 16:04:34
我结束了使用BeanIO,但感谢您的帮助!让我指出了正确的方向。 – TyC 2011-12-30 15:59:48