簡體   English   中英

JAVA - 解析 CSV 文件 - 更改分隔符

[英]JAVA - Parsing CSV File - Change delimiter

我有一個問題,想問問是否有人可以幫助我。 我有一個 Java 應用程序,它處理 CSV 個文件。 這些文件有一個分號作為“分隔符”。 現在我想使用 pipe "|" 而不是分號作為“分隔符”。 做這個的最好方式是什么?

我已經在圖書館或class“org.apache.commons.csv.CSVRecord”通知了自己。 不幸的是在這里找不到任何東西。

我使用 class FlatItemReaderBuilder 來解析 Spring Batch。

您還可以在非 Spring 應用程序中使用 Spring 批處理類。

在這里你可以找到一個例子:

https://www.petrikainulainen.net/programming/spring-framework/spring-batch-tutorial-reading-information-from-a-file/

你可以使用 Scanner 或 FileInputStream

import java.io.File;
import java.io.IOException;
import java.util.Scanner;

public class ReadDelimited {
    public static void main(String[] args) {
    Scanner sc = null;
    try {
      sc = new Scanner(new File("D:\\acct.csv"));

      // Check if there is another line of input
      while(sc.hasNextLine()){
        String str = sc.nextLine();
        // parse each line using delimiter
        parseData(str);
      }
    } catch (IOException  exp) {
      // TODO Auto-generated catch block
      exp.printStackTrace();
    }finally{
      if(sc != null)
        sc.close();
    }           
  }
    
  private static void parseData(String str){    
    String acctFrom, acctTo, amount;
    Scanner lineScanner = new Scanner(str);
    lineScanner.useDelimiter("|");
    while(lineScanner.hasNext()){
      acctFrom = lineScanner.next();
      acctTo = lineScanner.next();
      amount = lineScanner.next();
      System.out.println("Account From- " + acctFrom + " Account To- " + acctTo + 
       " Amount- " + amount);  
    }
    lineScanner.close();
  }
}

參考代碼原鏈接

或者如果文件不是太大,則讀取字符串中的文件通過按換行符拆分將其分成字符串數組,然后使用選擇的分隔符進行拆分,如下面的代碼所示。

public static void main(String[] args) throws IOException {

        FileInputStream fileInputStream=new FileInputStream("j:\\test.csv");

        String s1=new String(fileInputStream.readAllBytes());

        String[] lineArray=s1.split("\n");

        List<String[]> separatedValues=new ArrayList<>();

        for (String line: lineArray) {
            separatedValues.add(line.split("\\|"));
        }

        for (String[]  s: separatedValues) {
            for (String s2:s ) {
                System.out.print(s2+" ");
            }
            System.out.println("");
        }

        fileInputStream.close();

    }

代碼 Output 鏈接

原件CSV

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM