2016-09-17 22 views
0

私は2つのcsvファイルを持っています。
CSV File1 = csvFrom、// 2つのカラムcolumn1 =電子メール(5つの電子メールのみ)、Column2 =パスワード
CSV File2 = csvSendTo //カラムは1つだけです。 (数千の電子メール)。JavaのCSVファイルの読み込みと解析

私はcsvFromファイルを読み込もうとしていますが、最初のファイルから最初のメールIDとそのパスワードが必要です。その後、2番目のcsvSendToファイルから20件の電子メールが送信されます。最初の電子メールIDとパスワードから20種類の電子メールに電子メールを送信したい。 1つのメールIDで手動でメールを送信できます。しかし、私はCSVファイルからそれを読み取ろうとしましたが、それは私にNullPointerExceptionを与えました。以下は私のコードです:私はエラーを与えている部分を貼り付けています。誰も私をここで案内できますか?このforループはここで間違っていますが、私はちょっと混乱していますので、正確なループで置き換えることはできません。

BufferedReader br1=null; 
    BufferedReader br2=null; 
    String line1="",line2=""; 
    String csvSplitBy=","; 
    String strMailFrom="",strPassword=""; 
    int countCSVFrom=0,countCSVSendTo=0; 
    System.out.println("strCSVFrom=" + strCSVFrom + ", strcsvSendTo=" + strCSVSendTo); 
    try{ 
     br1=new BufferedReader(new FileReader(strCSVFrom)); 
     br2=new BufferedReader(new FileReader(strCSVSendTo)); 
     String[] strarrFromEmail; 
     while((line1=br1.readLine())!=null){ 
      countCSVFrom+=1; 
      strarrFromEmail=line1.split(csvSplitBy); 
     // for(int i=countCSVFrom-1;i<=countCSVFrom;i++){ 
     //  strMailFrom=strarrFromEmail[i]; 
     //  strPassword=strarrFromEmail[i+1]; //While here its ArrayIndexOutOfBounds Exception 
     // } 
     //what is the correct thing to write it over here instead of for loop? 
     } 
     System.out.println("countcsvfrom="+countCSVFrom + ", line1=" + line1.toString()); //Giving me an error of NullPointerException over here. 

     System.out.println("strFrom="+strMailFrom + ", strPassword="+strPassword); 
     while((line2=br2.readLine())!=null){ 
      countCSVSendTo+=1; 
     } 
     System.out.println("countcsvsendto="+countCSVSendTo); 
    }catch(FileNotFoundException fnfe){ 
     fnfe.printStackTrace(); 
    }catch(IOException ioe){ 
     ioe.printStackTrace(); 
    } 
+0

スタックトレースまたは行番号エラーが発生しました。ここでは必須です – Sanka

+0

私の質問で更新しました。 –

答えて

0

あなたは書くことができます:

//your code here and try catch block below 
try { 
    List<String[]> csvLines = new ArrayList<String[]>(); 
    Files.lines(Paths.get(strCSVFrom)).map(e -> e.split(csvSplitBy)).forEach(csvLines.add(e)); 
} catch (Exception) { 
    //exception handling 
} 
1

System.out.printlnは、単に最初whileループの閉じ括弧の後に、NPEを与えます。それはline1を使用し、その時点で前記whileループ保証の終了条件はnullになります。

+0

ありがとうございます。はい、私はそれを得るが、それを解決する方法を得ていない。 –

関連する問題