我正在尝试读取.CSV文件,该文件由邮政编码及其在一个国家/地区的地址组成。每当我尝试读取文件时,打印控制台只会显示文件的一部分,而不是整个文件。我应该怎么做才能将整个文件打印到控制台。
我正在处理Eclipse,并且尝试了CSVreader(openCSV库)和扫描器inputStream,但是每次编译时它们显示的结果都不相同。
public class Database
{
public static void main(String[] args) throws Exception
{
CSVReader reader = new CSVReader(new FileReader("data.csv"));
List<String[]> allRows = reader.readAll();
for(String[] row : allRows){
System.out.println(Arrays.toString(row));
}
}
}
预期:
[Chakragaon,S.O,744112]
[Chatham,S.O,744102]
[Delanipur,S.O,744102]
[Marine Jetty,S.O,744101]
[米妮湾,S.O,744103]
[N.S.Building,S.O,744101]
实际:
[米妮湾,S.O,744103]
[N.S.Building,S.O,744101]
文件包含100,000+行。
答案 0 :(得分:0)
这可能是打印问题,也可能不是。首先,应检查您实际读取的行是否多于2行。为此,我建议使用调试器(听起来像您根据标签使用eclipse的声音),并在读取行后在处放置一个断点。取得尺寸...
最重要的是,如果程序的行为与您期望的不同,没有比使用调试器更好的解决方案,逐行进行跟踪,在变量视图中查看变量,看看发生了什么事情不会按照您认为的方式进行。
答案 1 :(得分:0)
由于reader.readAll()
,您正在遇到此问题-读取器具有安全防范功能,可防止您通过读取海量文件而导致内存溢出。相反,一次只能读取一行,打印,然后继续进行下一行:
CSVReader reader = new CSVReader(new FileReader("data.csv"));
for(String[] row : reader) {
System.out.println(Arrays.toString(row));
}
for循环语法将CSVReader
识别为Iterable<String[]>
,因此它可以自动循环行。