java讀取寫入CSV文件


java讀取寫入CSV文件

覺得有用的話,歡迎一起討論相互學習~

我的微博我的github我的B站

讀取CSV文件中的數據示例一

  • 示例一為讀取一個N行Dim列的逗號分隔的二維Double類型csv文件
  • 基本思路
  • 按行讀取,每一行都是一個String,使用Split函數分成一個String[],將String[]中每個元素轉為Double類型存入Double[]數組中,每一行的Double[]在存入ArrayList中。
public void test() {
    readValues(OutputfilePath, Valueslist);
    for (int i = 0; i < Valueslist.size(); i++) {
        for (int j = 0; j <Valueslist.get(0).length; j++) {
            System.out.print(Valueslist.get(i)[j]+"  ");
        }
        System.out.println();
    }
}

public void readValues(String readpath, ArrayList<Double[]> Valueslist) {
    //想要讀取的數據是一個[N,Dim]的二維矩陣
    File inFile = new File(readpath);
    try {
        BufferedReader reader = new BufferedReader(new FileReader(inFile));

        while (reader.ready()) {
            //這里沒有辦法使用矩陣進行操作,因為我們一行一行的讀沒有辦法知道csv中保存數據的長度和寬度
            //但是返回的是一個String,我們可以對這個String進行操作,按照分隔符將其分割,最好能是能夠保存到一個完整的結構中
            String line = reader.readLine();
            String[] splitline = line.split(",");
            //這里每一列的元素都是一個double數值,例如
            //因此接下來我能夠直接的轉換成Double類型的變量
            int Dim = splitline.length;
            //將splitline中的每個元素保存到double類型的數組中
            Double[] temp = new Double[Dim];
            for (int i = 0; i < Dim; i++) {
                temp[i] = Double.valueOf(splitline[i]);
            }
            Valueslist.add(temp);
        }
        reader.close();

    } catch (Exception e) {
        e.printStackTrace();
    }
}

讀取CSV文件中的數據示例二

  • 示例二維讀取一個N行兩列的逗號分隔的二維數字字符串混合的csv文件
import java.io.*;
import java.util.ArrayList;
import java.util.StringTokenizer;

public class readCSV {
    void readCSV(String readpath, ArrayList Nolist, ArrayList Dnalist) {
        File inFile = new File(readpath);
        try {
            BufferedReader reader = new BufferedReader(new FileReader(inFile));
            //判斷是否到達文件末尾
            while (reader.ready()) {
                String line = reader.readLine();
                //返回一個","分隔的迭代器
                //這種方法不是很好,建議還是使用示例一中的方法
                StringTokenizer st = new StringTokenizer(line, ",");
                int NO;
                String DNAsequence;

                if (st.hasMoreTokens()) {
                    NO = Integer.valueOf(st.nextToken().trim());
                    DNAsequence = String.valueOf(st.nextToken().trim());
                    //使用ArrayList接收數據
                    Nolist.add(NO);
                    Dnalist.add(DNAsequence);
                }
            }
            reader.close();

        } catch (Exception e) {

            e.printStackTrace();
        }
    }
}

將數據保存為csv格式

package Readcsv_testV0;
import java.io.*;
import java.util.ArrayList;

public class OutputCSV {
    public static void writeCSV(ArrayList<String []> DNA, ArrayList<Double> Con, ArrayList<Double> Hp, ArrayList<Double> Hm, ArrayList<Double> Si, ArrayList<Double> Tm, ArrayList<Double> GC, String path) {
        try {
            BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(path), "UTF-8"));
            for (int i = 0; i < DNA.size(); i++) {
                out.write(DNA.get(i)[0]);
                out.write(",");
                out.write(DNA.get(i)[1]);
                out.write(",");
                out.write(Con.get(i).toString());
                out.write(",");
                out.write(Hp.get(i).toString());
                out.write(",");
                out.write(Hm.get(i).toString());
                out.write(",");
                out.write(Si.get(i).toString());
                out.write(",");
                out.write(Tm.get(i).toString());
                out.write(",");
                out.write(GC.get(i).toString());
                out.newLine();
            }
            out.flush();
            out.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2024 CODEPRJ.COM