首页 > 解决方案 > 读取 nginx 提供的 CSV 时出错

问题描述

我正在使用com.opencsv.CSVReader从我的 nginx Web 服务器提供的 URL 读取 CSV。CSV 文件内容正是这样的:

0.999,1.399,1.799,2.199,2.599,2.999,3.399,3.799,4.199,4.599,4.999,5.399

问题是,当我读取文件时,我没有得到 csv 值:

try (InputStreamReader in = new InputStreamReader(new URL(...csv).openStream(), "UTF-8"); CSVReader r = new CSVReader(in)) {

  List<String[]> csv = r.readAll();
  ....

在此之后, csv 无法获取数据(但没有引发错误),并且csv.get(0).length错误地是1一个空字符串。我不知道为什么。我为隔离问题所做的测试:

这就是为什么我也在考虑这可能是一个 nginx 问题,因为我最近也遇到了文件未完成下载的错误,我不得不将以前keepalive_timeout 65运行良好的文件更改为keepalive_timeout 0. 我不知道为什么会突然发生这种情况。

标签: javacsvnginxopencsv

解决方案


这很难调试,但解决方案是重新安装 nginx,因为我的副本已损坏。我的 nginx 实例发送了额外的\r字符,这些字符不会干扰curl或类似但会破坏 Java 实现。

顺便说一句 - 这可能突出了.openStream()实现中的一个错误。


推荐阅读