gpt4 book ai didi

java - 如何反序列化 CSV 文件流?

转载 作者:行者123 更新时间:2023-12-02 00:07:20 24 4
gpt4 key购买 nike

时隔 8 年,我又回到了 Java。

我有一个文件上传 HTML 页面:

<form action="/upload" method="post" enctype="multipart/form-data">
<input type="file" name="file" />
<input type="submit" value="Upload" />
</form>

从我上传 CSV 文件的位置。

/upload 映射到实现 doPost 方法的 servlet:

  ServletFileUpload upload = new ServletFileUpload();
FileItemIterator iterator = upload.getItemIterator(req);

while (iterator.hasNext()) {

FileItemStream item = iterator.next();
InputStream stream = item.openStream();

if (!item.isFormField()) {
int len;
byte[] buffer = new byte[8192];
while ((len = stream.read(buffer, 0, buffer.length)) != -1) {
// do some deserialization here..?
}
}

}

我真的希望有一种比手动解析方法更好的方法。我正在阅读有关 Serialized 接口(interface)的内容 - 这是我可以使用的东西吗?

谢谢。

最佳答案

我希望您已经看过 user guide根据您的代码进行公共(public)文件上传。

您可以轻松地将输入流从 commons fileupload 传递到 CSV 库,例如 Super CSV而不是编写自己的流读取代码。您甚至可以将 CSV 作为 POJO(即 Javabean)来读取。看看examples

您的代码与示例的唯一不同之处在于您从输入流而不是文件中读取,因此创建读取器将如下所示:

ICsvBeanReader beanReader = new CsvBeanReader(
new InputStreamReader(stream), CsvPreference.STANDARD_PREFERENCE);

如果您实际上不想读取 CSV 文件(例如,您可能想保留它或通过电子邮件发送它),那么您可以使用 Commons IO 的 IOUtils将其读入字节数组。

byte[] bytes = IOUtils.toByteArray(stream);

哦,欢迎回到 Java :)

关于java - 如何反序列化 CSV 文件流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13558999/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com