2017-05-25 10 views
-1

私はJavaを使い慣れていないので、私にはわかりません。私はフォルダからすべてのcsvファイルを1つずつ読み込んで、例えばそれらを検証する必要があります。名前、年齢、電子メールなどのデータがあります。名前には文字のみを使用し、年齢は数字で、電子メールは有効な電子メール形式でなければなりません。いずれかの行に無効なデータが含まれているファイルは、その特定のCSVファイルを処理してはならないので、間違ったCSVファイルを持つ別のフォルダに移動し、そのフォルダ内の次のCSVに移動しますすべてがチェックされ、検証され、移動されるまで。 私はこれから始める方法を知らない。みんなを助けてください。.csvファイルを読み込み、検証し、移動する方法は?

+0

ここでは多くの質問があります。ごめんなさい。 – OldProgrammer

+0

私は少なくともそれからどのように始めるべきですか?どのようにして行ごとにcsv行を解析し、検証のためにデータを取得するのですか? –

+0

Apacheユーティリティを使用してCSVファイルを読むことができます:https://commons.apache.org/proper/commons-csv/ – anishthecoder

答えて

1

まず、ファイルを.csv format1に保存します。これはExcelシートで動作します。このコードでmain()でこの関数を呼び出すと、行ごとに.csvファイルを読み込み、一度に各セルを読み込みます。

これを試してみてください:

public List<HashMap<String, Object>> convertCSVRecordToList() { 

    String csvFile = "your_file_name.csv"; 
    BufferedReader br = null; 
    String line = ""; 
    String cvsSplitBy = ","; 
    HashMap<String, Object> Map = new HashMap<String, Object>(); 

    List<HashMap<String, Object>> MapList = new ArrayList<HashMap<String, Object>>(); 

    try { 

     br = new BufferedReader(new FileReader(csvFile)); 

     while ((line = br.readLine()) != null) { 

      System.out.println(line); 

      String[] data = line.split(cvsSplitBy);   

      Map.put("filed_name", data[3]); 
      Map.put("field_name", data[0]); 
      Map.put("field_name", data[2]); 
      Map.put("fiels_name", data[1]); 

      MapList.add(Map); 
      Map = new HashMap<String, Object>();     
     } 

    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } 
    catch (IOException e) { 
     e.printStackTrace(); 
    } 

    return MapList; 
} 
2

OK、の4つの小さな話題以下にこの質問を分けてみましょう:フォルダを読み取るために

  1. Javaプログラムを、結果はファイル
  2. のJavaのリストですプログラムはファイルを読むために、結果は行のリストです
  3. 行を解析し、列のリストを得るJavaプログラム
  4. 名前、年齢、電子メールの場合は、ステップ1

データ検証

  • :フォルダを読み込むためのJavaプログラムが、結果はあなたがJavaプログラムのあなたの一番上に以下の持っていると仮定すると、ファイル

    のリストがある

    コードの下
    import java.io.*; 
    import java.util.*; 
    

    フォルダ

    File f = new File(folder); 
    File[] fileList = f.listFiles(); 
    

    ステップ2でファイルのリストを取得する必要があります。ファイルを読み込むためのJavaプログラム、結果I行のリストが

    String line; 
    BufferedReader br = new BufferedReader(new FileReader(path)); 
    while ((line = br.readLine()) != null) { 
        String l = line.trim(); // Remove end of line. You can print line here. 
    } 
    br.close(); 
    

    ステップ3:検証例えば:行を解析するJavaプログラム、列

    String[] columns = l.split(","); // separate line by comma 
    for(int i=0; i<columns.length; i++) 
    { 
        System.out.println(columns[i].trim());// remove space after comma 
    } 
    

    ステップ4のリストを取得します年齢 年齢はそう整数である整数

    int age = Integer.parseInt(columns[3].trim());//assuming age at column #3 
    

    別の答えが出てくる参照してくださいと、それを解析する必要があります。その答えには、フォルダからファイルへのループはありません。 これが役立つことを願っています。

  • +0

    ここでの問題点:もし*本物の* csvファイルを話しているのであれば、分割を使ってそれらを解析するあなたの素朴なアプローチは壊れてしまいます。csvの解析は深刻なビジネスであり、間違ってしまうのは簡単です。 – GhostCat

    +0

    彼は初心者であり、最初のラウンドであまりにも多くを表示することはできません。当時、彼はC#についてもっと知っていました。 –

    関連する問題