有网站想修改里面的内容怎么做,长春市人才网,潍坊百度seo,设计英语我一直在做一些涉及读取CSV文件的工作#xff0c;而我一直在使用OpenCSV #xff0c;而我的最初方法是逐行读取文件#xff0c;解析内容并将其保存到地图列表中。 当文件的内容适合内存时#xff0c;此方法有效#xff0c;但对于较大的文件来说是个问题#xff0c;在这种… 我一直在做一些涉及读取CSV文件的工作而我一直在使用OpenCSV 而我的最初方法是逐行读取文件解析内容并将其保存到地图列表中。 当文件的内容适合内存时此方法有效但对于较大的文件来说是个问题在这种情况下我需要流式传输文件并逐行处理每一行而不是在加载文件后处理所有行。 最初我在totallazy的Stringslines上编写了一个变体来做到这一点尽管能够流传输文件但我在某个地方犯了一个错误这意味着堆上的映射数一直在增加。 在花了几个小时尝试修复此问题之后 Michael建议使用迭代器会更容易些而我最终得到以下代码 public class ParseCSVFile {public static void main(String[] args) throws IOException{final CSVReader csvReader new CSVReader( new BufferedReader( new FileReader( /path/to/file.csv ) ), \t );final String[] fields csvReader.readNext();IteratorMapString, Object() lazilyLoadedFile return new IteratorMapString, Object(){String[] data csvReader.readNext();Overridepublic boolean hasNext(){return data ! null;}Overridepublic MapString, Object next(){final MapString, Object properties new HashMapString, Object();for ( int i 0; i data.length; i ){properties.put(fields[i], data[i]);}try{data csvReader.readNext();}catch ( IOException e ){data null;}return properties;}Overridepublic void remove(){throw new UnsupportedOperationException();}};}
} 尽管此代码有效但它并不是我编写过的最具可读性的函数因此欢迎提供有关如何以更简洁的方式执行此操作的任何建议。 参考 Java从Mark Needham博客博客的JCG合作伙伴 Mark Needham 逐步读取/流式传输CSV文件 。 翻译自: https://www.javacodegeeks.com/2013/10/java-incrementally-readstream-a-csv-file.html