我也寫過那篇文章。那篇文章是關於大文件的,這個問題並不假定文件很大。沒有具體的解決方案。如何合併39 csv文件並將它們放入二維數組
我有39個csv文件。我想通過Java加載這個文件並設置爲一個變量。下面的段落是我的編碼,它適用於一個文件,但我不知道如何進行多個文件合併。我想在目錄中加載39個文件,並將它們放入一個2d數組中。
public static String readCSV(File csvFile) {
BufferedReader bufferedReader = null;
StringBuffer stringBuffer = new StringBuffer();
try {
bufferedReader = new BufferedReader(new FileReader(csvFile));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
try {
String temp = null;
while((temp = bufferedReader.readLine()) != null) {
stringBuffer.append(temp+","); // temp 에 저장되어있는 한 줄을 더한다.
}
System.out.println(stringBuffer);
} catch (IOException e) {
e.printStackTrace();
}
// -10,-9,-8,-7,-6,-5,-4,-3,-2,-1,0,,,,,,,,,,1,2,3,4,5,6,7,8,9,10, 반환
return stringBuffer.toString();
}
public static String[] parse(String str) {
String[] strArr = str.split(","); // 쉼표가 1개인 것을 기준으로 나누어서 배열에 저장
return strArr;
}
public static void main(String[] args) throws IOException {
//mergeCsvFiles("sample", 4, "D:\\sample_folder\\" + "merge_file" + ".csv");
String str = readCSV(new File("D:/sample_folder/sample1.csv"));
String[] strArr = parse(str); // String 배열에 차곡차곡 담겨서 나온다.
int varNumber = 45;
int rowNumber = strArr.length/varNumber;
String[][] Array2D = new String[varNumber][rowNumber];
for(int j=0;j<varNumber;j++)
{
for(int i=0; i<rowNumber;i++)
{
String k = strArr[i*varNumber+j];
Array2D[j][i]= k;
}
} //2D array 배열을 만들기
//String[][] naArray2D=removeNA(Array2D,rowNumber,varNumber); //NA 포함한 행 지우기
// /* 제대로 제거 됐는지 확인하는 코드
for(int i=0;i<varNumber;i++){
for(int j=0;j<16;j++){
System.out.println(Array2D[i][j]);
}
System.out.println("**********************NA제거&2차원 배열**********************");
}
// */
}
}
得到所有的文件名有你看了這個教程? https://www.mkyong.com/java/how-to-read-and-parse-csv-file-in-java/ –
是的,我看過了。你的意思是說我的解決方案存在於那裏嗎? – kimHS
你能否提供一些2D數組的細節?簡要說明如何將不同的文件存儲在二維數組中將會很有幫助。 –