简体   繁体   English

如何从 csv 文件中读取特定范围并写入 Java 中的另一个 csv 文件?

[英]How to read specific range from a csv file and write to another csv file in Java?

This is the code I have been using to read all the records from CSV file.这是我用来从 CSV 文件中读取所有记录的代码。 I am quite new to the java.我对 java 很陌生。

FileReader openFile = new FileReader("/Users/ABC/Desktop/Test/myFirstFile.csv"); 

    BufferedReader readMyDataObj = new BufferedReader(openFile)
    FileWriter writer2 = new FileWriter("/Users/ABC/Desktop/Test/mySecondFile.csv");
    BufferedWriter bf2 = new BufferedWriter(writer2);
    String data2;
    while ((data2=readMyDataObj.readLine())!=null) {    
    bf2.write(data2);
    bf2.newLine();       
     }
    bf2.close();                   
    writer2.close();
    openFile.close();

here is a very good example for your requirement - read and also filter examples are present https://mkyong.com/java8/java-8-stream-read-a-file-line-by-line/这是满足您要求的一个非常好的示例 - 存在读取和过滤示例https://mkyong.com/java8/java-8-stream-read-a-file-line-by-line/

If you want to write data to a JSON file your best bet is to use a standard Java library like org.json !如果您想将数据写入 JSON 文件,最好的办法是使用标准 Java 库,如org.json

You can achieve your desired results by using some variables and a counter around the main while loop.您可以通过在主 while 循环周围使用一些变量和计数器来实现您想要的结果。 Also, it might make sense to take into account whether or not the input csv file has a header row.此外,考虑输入 csv 文件是否具有 header 行可能是有意义的。

Main.java主.java

    public static void main(String[] args) throws IOException {
        FileReader inFile = new FileReader("a.csv");
        BufferedReader inReader = new BufferedReader(inFile);

        FileWriter outFile = new FileWriter("b.csv");
        BufferedWriter outWriter = new BufferedWriter(outFile);

        // Range to read/write
        int low = 5;
        int high = 10;

        int count = 1;
        String line = inReader.readLine();
        while (line != null && count < high) {
            if (count >= low) {
                outWriter.write(line);
                outWriter.newLine();
            }

            line = inReader.readLine();
            count++;
        }

        inReader.close();
        inFile.close();
        outWriter.close();
        outFile.close();
    }

a.csv a.csv

ID,First Name,Last Name,City,State,Age,Height
iW00K,Jane,Bosco,Lake Dandreland,ME,61,170.57
BzxTl,Steve,Smith,Uniqueside,PA,35,152.93
vobj8,Tony,Auer,Tressiestad,MS,63,160.86
X78RS,Steve,Cole,Port Zellachester,OH,72,159.84
0YpWG,John,Lu,East Vernaview,OH,18,200
4JaoZ,Peter,Simonis,Wernerchester,HI,25,161.64
hP48C,Tom,Lu,Uniqueside,ME,45,161.64
WDQpb,John,Casper,East Felicityshire,OH,42,170.57
wyPwB,Jane,Johns,Maggiehaven,CA,16,180.42
VCtYR,Peter,Jast,Schadenberg,ME,41,161.64
1VYOs,John,Daniel,Port Zellachester,HI,34,200
V7pg9,Tom,Mayert,Schadenberg,OH,71,152.93
SmE9w,Jane,Lu,Stephanchester,HI,25,176.95
ALyok,Tom,Smith,Ryanchester,PA,70,176.95
fgE5v,Peter,Bailey,Bednarstad,PA,67,170.24
eBIIM,Peter,Haley,East Vernaview,MS,65,161.64
5sv4L,Peter,Prosacco,Uniqueside,PA,50,178.25
a48IS,Peter,Marvin,Kossview,OH,63,200
9mLcZ,John,VonRueden,East Vernaview,PA,20,174.24

b.csv b.csv

X78RS,Steve,Cole,Port Zellachester,OH,72,159.84
0YpWG,John,Lu,East Vernaview,OH,18,200
4JaoZ,Peter,Simonis,Wernerchester,HI,25,161.64
hP48C,Tom,Lu,Uniqueside,ME,45,161.64
WDQpb,John,Casper,East Felicityshire,OH,41,170.57

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM