- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试使用 beanio 将带注释的类写入固定长度的文件。所有类都已注释,但出现异常
"Invalid field 'employees', in record 'team', in stream 'Tm': Type handler not found for type 'com.mycompany.bio.Employee'"
下面是我的源代码
public static void main(String[] args) {
StreamFactory factory = StreamFactory.newInstance();
StreamBuilder builder = new StreamBuilder("Tm")
.format("fixedlength")
.parser(new FixedLengthParserBuilder())
.addRecord(com.mycompany.bio.Team.class);
factory.define(builder);
Employee e1 = new Employee("EmpF1", "EmpL1", "Developer", "1", new Date());
Employee e2 = new Employee("EmpF2", "EmpL2", "Developer", "2", new Date());
Team team = new Team();
team.setTeamName("Great Team");
team.getEmployees().add(e1);
team.getEmployees().add(e2);
BeanWriter out = factory.createWriter("Tm", new File("C:\\Users\\user\\Desktop\\tm.dat"));
out.write(team);
out.flush();
out.close();
}
团队类:
@Record(minOccurs = 1)
public class Team {
// @Segment(collection = ArrayList.class, minOccurs = 0, maxOccurs = Integer.MAX_VALUE) segments return single line team::teamName and 2 emp records, I want to see 3 lines 1.teamname 2 & 3 emp info
@Field(ordinal = 1, length = 106)
private List<Employee> employees;
@Field(ordinal = 0, length = 10)
private String teamName;
.....
}
员工类:
@Record(minOccurs=1)
public class Employee {
@Field(ordinal = 1, length = 30)
private String firstName;
@Field(ordinal = 2, length = 30)
private String lastName;
@Field(ordinal = 3, length = 30)
private String title;
@Field(ordinal = 4, length = 8)
private String salary;
@Field(ordinal = 5, format="MMddyyyy", length = 8)
private Date hireDate;
...
}
最佳答案
快速解决方案是:
public static void main(String[] args) throws IOException {
StreamFactory factory = StreamFactory.newInstance();
StreamBuilder builderCSV = new StreamBuilder("Tm")
.format("fixedlength")
.parser(new FixedLengthParserBuilder())
.addRecord(com.mycompany.bio.Team.class)
.addRecord(com.mycompany.bio.Employee.class);
factory.define(builderCSV);
BeanWriter out = factory.createWriter("Tm", new File("C:\\Users\\topSecretUsername\\Desktop\\tm.txt"));
Employee e1 = new Employee("EmpF1", "EmpL1", "Developer", "1", new Date());
Employee e2 = new Employee("EmpF2", "EmpL2", "Developer", "2", new Date());
Team team = new Team();
team.setTeamName("Great Team");
team.getEmployees().add(e1);
team.getEmployees().add(e2);
out.write(team);
for (Employee e : team.getEmployees()) {
out.write(e);
}
out.flush();
out.close();
}
团队类:
@Record
public class Team {
@Field(ordinal = 1, length = 10)
private String teamName;
private List<Employee> employees = new ArrayList<>();
....}
员工:
@Record
public class Employee {
@Field(ordinal = 1, length = 30)
private String firstName;
@Field(ordinal = 2, length = 30)
private String lastName;
@Field(ordinal = 3, length = 30)
private String title;
@Field(ordinal = 4, length = 8)
private String salary;
@Field(ordinal = 5, format="MMddyyyy", length = 8)
private Date hireDate;
....}
输出文件内容:
Great Team
EmpF1 EmpL1 Developer 1 20150622
EmpF2 EmpL2 Developer 2 20150622
关于java - BeanIO 将带注释的类写入固定长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30946069/
我有并行读取员工、地址和联系人文件并将其转换为 beanIO 对象并合并 beanIO 对象以生成完整的 employeeDetails 对象的用例。 Emp 文件: 1 Foo Engineer 2
我正在尝试使用 BeanIO 读取/写入 Android 应用程序中的 csv 文件。当我尝试创建 StreamFactory 的实例时,出现以下错误: 03-02 08:52:19.076: E/A
我有一个采用 ANSI (windows-1252) 编码的 .txt 文件,我可以在 Windows 上读取它,但不能在 unix 上读取。 这是 xml 映射文件:
这是我的问题:我必须使用 BeanIO 来读取 CSV。这个 CSV 类似于: s1_el1;s1_el2;s1_el3;s1_el4;X1;Y1;Z1 s2_el1;s2_el2;s2_el3;s2
我正在尝试使用 beanio 将带注释的类写入固定长度的文件。所有类都已注释,但出现异常 "Invalid field 'employees', in record 'team', in stream
我在一个文件中有以下两种类型的记录,我可以使用 BeanIO 解析该文件以获取记录类型 1 或 2 中的任何一种,但我无法在单个解析器中同时执行这两种操作。我不知道如何在单个记录中使用我的两个映射。请
我正在使用这种模式: 这会将数字转换为小数点后 10 位。但是,如果数字有 7 位小数,则会添加 3 个尾随 0。如何更改模式以不添加尾随 0。 示例: 如果数字为 8.7829
我正在使用 BeanIO 来解析固定宽度的文本文件。例如,进入我的项目的文件看起来像以下固定宽度文本: CD DummyValue3 EF DummyValue4 DummyValue5 Dumm
我有一个用于 beanio 的固定长度记录 bean,如下所示: @Record public class RecordBean { @Field(at = 0, length = 3)
我目前正在开发一个通过平面文件获取数据的遗留应用程序。使用 beanio 来读取和写入平面文件,并通过注释定义记录。我的问题是其中一个平面文件的规范要求使用索引 20 到 26(不是记录末尾)的空白来
我有一个固定长度的流。我想将编码设置为 Windows-1252 或 latin1。 我该怎么做? 通过 XML 会更好,但如果代码是唯一的方式,也可以。 最佳答案 字符编码是使用基本的 Java I
当我想用Xmappr注释指定java类中XML元素的属性时,我使用@Attribute注释,例如: exampleclass.java: @Attribute("Code") private Stri
这是我的 BeanIO xml 配置文件: 问题是我需要由调用此 xml 文件来解析文件的类动态设置“MM/dd/yyyy
我最近将 BeanIO 框架升级到 2.0.6 版本,以将我的平面(制表符分隔)文件解析为 java 对象,我注意到如此奇怪的行为。我不能在最后一个文件行中将字段保留为空,因为 BeanIO 向我抛出
所以我正在使用 BeanIO,我必须编写一个类型处理程序,如果通用列表为空,它将为列表分配 null。例如,我正在从 xml 文件中导入地址。 如果有关于地址的完整信息,xml 如下所示: aaaa
我正在使用BeanIO将平面文件转换为对象列表。使用以下代码片段。 while ((MyCustomRecord obj = (MyCustomRecord) in.read()) != null)
BeanIO reference guide声明对于固定长度的流: if required is set to false, spaces are unmarshalled to a null fie
我尝试使用 BeanIO 将 CSV 转换为 POJO,发现一个问题可能会对你们中的一些人有所帮助。 这是我得到的错误“记录'user'中的无效字段'LastName',在流'userTemplate
我正在尝试使用 BeanIO 框架将数据列表写入 CSV。我能够将单个对象写入 CSV,但无法写入数据列表。 我试过下面的代码: package com.beanio.example; import
我想要用分隔符解析文件。我使用BeanIO 2.1.0。我有一个文件,其中包含一个带有双引号的字符串: "TEST"/37326330|TEST2 在配置中我设置参数:
我是一名优秀的程序员,十分优秀!