2016-12-02 6 views
-2

私もその記事を書いています。その記事は大容量ファイルに関するもので、この質問はファイルが大容量であるとは想定していません。そして、具体的な解決策はありません。39 csvファイルをマージして2次元配列にする方法

私は39のcsvファイルを持っています。私はこのファイルをJavaでロードし、1つの変数として設定したいと考えています。下の段落は、私のコーディングは1つのファイルで動作しますが、私は複数のファイルのマージ方法を知らない。私はディレクトリに39ファイルをロードし、1つの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차원 배열**********************"); 
    }   
//  */ 

    } 
} 
+0

以下のすべてのファイル名を取得することができますJavaのリストファイルを使用して、あなたのしたディレクトリ内のすべてのこれらのcsvファイルを入れてすることができ、正確ですこのチュートリアルを見ましたか? https://www.mkyong.com/java/how-to-read-and-parse-csv-file-in-java/ –

+0

はい、私は見ました。私の解決策がそこに存在することを意味しますか? – kimHS

+0

2D配列に関する詳細を教えてください。さまざまなファイルを2D配列に保存する方法についての簡単な説明が役に立ちます。 –

答えて

-1

あなたのロジックは、複数のファイルのためにあなたは今まであなたが道

File txtPat = new File("C:\\Users\\Admin\\Desktop\\") ; 
File allFile[] = txtPat.listFiles(); 

for(int i = 0 ;i<allFile.length;i++) 
{ 
    System.out.println(allFile[i]); 
} 
+0

ありがとうございます。しかし、私の問題は、ファイルを読み込むことではなく、1つの配列にすべてをマージする – kimHS

+0

2Dのサイズが各レコードに同じかどうかを教えてください。 –

+0

アレイ[サイズ:97] [サイズ違い]。最初の行配列[1] []は同じですが、2番目の行配列[2] []とは異なります。 – kimHS

関連する問題