2017-09-26 11 views
-2

私がテストデータとのcsvファイルがあります。各行の終わりにcsvファイルにテキストを追加する方法Java?

31-September-2017 01:52:57 02:11:25 
31-September-2017 01:52:57 02:11:25 

私はこのように、各行の末尾にデータのライン毎にテスト結果(PASS/FAIL)を書きたい:

31-September-2017 01:52:57 02:11:25 PASSED 
31-September-2017 01:52:57 02:11:25 FAILED 

openCSV apiを使用してファイルの内容を読み取ります。 CSVWriterを使用して同じファイルを開くと、ファイルのすべての内容が削除されます。使用されたBufferedWriter同様、同じ問題。

これを達成するには、ファイルの元の内容をそのまま残し、各行の最後にテスト結果を追加してください。ありがとう。

+0

デバッグヘルプ(「このコードはなぜ動作しないのですか?)」には、問題、エラー、および質問自体に再現するのに必要な最短コードが含まれている必要があります。明確な問題文がない質問は、他の読者にとって有用ではありません。参照:[mcve]を作成する方法。あなたの*質問*を改善するために "編集"リンクを使用してください - コメントでより多くの情報を追加しないでください。ありがとう! – GhostCat

答えて

0

使用BufferedReaderこのためBufferedWriter

  • 削除書き込む前に、各ラインにPASSED/FAILEDを追加ライン
  • で別のファイルの行を書く線で
  • をファイルの行を読みます新しいファイルの名前を変更してください。

私はこれが最善の方法になる理由を説明しようとするでしょう

  • その効率的な(ファイルのサイズであるO(n)nながら)
  • 簡単に実装するために(ちょうど約20-30行
  • )読書のためのコードの一部を書いては、読みやすさは非常に重要なポイントである(読みやすく理解しやすいでしょう。)以下のようなsimillar
+0

同じファイルに同じファイルを書き込むことができないのはなぜですか?ファイルの内容全体が削除されるのはなぜですか? – codefemme

+0

同じファイルに書き込む可能性はありますが、ファイルポインタの後に既存のコンテンツを上書きします。例:ファイルは 'foo ||| bar'のようになります。 '|||'の後ろに '' xyz "'を書きます。 filecontentは次のようになります: 'foo ||| xyz' – ParkerHalo

+0

なぜ起こるのか教えてください。私はこれに新しいです。 – codefemme

0

何かがopencsvで動作するはずです。

import com.opencsv.CSVReader; 
import com.opencsv.CSVWriter; 
import java.io.FileReader; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.util.ArrayList; 
import java.util.List; 
import java.util.Random; 

public class Example {  
    public static void main(String[] args) { 
     try { 
      String fileName = "C:\\Users\\eritrean\\Desktop\\yourfile.csv"; 
      List<String[]> myEntries = readFile(fileName); 
      List<String[]> testedEntries = new ArrayList<>(); 
      for(String[] row : myEntries){ 
       String[] withTestResult = addTestResult(row,randomResult()); 
       testedEntries.add(withTestResult); 
      } 
      writeToFile(fileName,testedEntries); 
     } catch (IOException ex) { 

     } 
    } 
    public static List<String[]> readFile(String fileName) throws IOException { 
     CSVReader reader = new CSVReader(new FileReader(fileName),'\t','\"',0); 
     List<String[]> myEntries = reader.readAll(); 
     return myEntries; 
    } 

    public static String[] addTestResult(String[] row, String result){   
     return (String.join("\t", row)+"\t"+result).split("\t"); 
    } 
    public static String randomResult(){ 
     Random rand = new Random(); 
     return rand.nextBoolean()?"PASSED":"FAILED"; 
    } 
    public static void writeToFile(String fileName, List<String[]> myEntries) throws IOException { 
     try (CSVWriter writer = new CSVWriter(new FileWriter(fileName), '\t',CSVWriter.NO_QUOTE_CHARACTER)) { 
      for(String[] row: myEntries){ 
       writer.writeNext(row); 
      } 
     } 
    }  
} 
関連する問題