2017-07-30 8 views
0

最初に私はjavaでコーディングするときに新しいです。私はこの質問を投稿する前に広範な研究を行ってきましたが、私の質問に対する正確な答えは見つかりませんでした。私はそれが私の経験不足であると確信していますが、コミュニティが提供できる援助は非常に高く評価されます。BufferedWriterとnewLine属性を使用してテキストの文字列の後ろに行を挿入する

コード化したユーティリティクラスをデバッグしようとしています。置換されたテキストに新しい行を追加することについてのビットを除いて、コードは機能しています。

ここに、NetBeans IDEでエラーを生成するコードがあります。エラーは、互換性のないタイプです:ブールは私がやろうとしています

try (BufferedWriter bw = new BufferedWriter(new FileWriter (NewCSVFile),true)) 

何intに変換することはできません。このコードは、新しいファイルにCSVテキストファイル、代替と書き込み新しいCSVデータを読み込むために取得することですファイル内の元の改行を保持します。そして、私は使用されるメソッドがプラットフォームに依存しないようにしたいので、なぜ私はBufferedWriterを使用していますか。

ここにすべてのコードがあります。

public class TxtFileConverter { 

public static void main (String[] args) { 

// Location of the file you want to work with. 
File CSVFile = new File("/Users/data.csv"); 
File NewCSVFile = new File("/Users/NewData.csv"); 
String search = "[,](?!\\w)"; 
String replace = ",0"; 

try{ 
FileReader fr = new FileReader(CSVFile); 
String s; 
String totalStr = ""; 
try (BufferedReader br = new BufferedReader(fr)) { 

    while ((s = br.readLine()) != null) { 
     totalStr += s; 
    } 
    totalStr = totalStr.replaceAll(search, replace); 
    try (BufferedWriter bw = new BufferedWriter(new FileWriter 
    (NewCSVFile),true)) { 
     bw.write(totalStr); 
     bw.newLine(); 
    } 
} 
}catch(IOException e){ 
    } 
    } 
} 
+0

これは役立つかもしれません:[プラットフォーム依存の改行文字を取得するにはどうすればいいですか?](https://stackoverflow.com/questions/207947/how-do-i-get-a-platform-dependent-new-ライン文字)。プラットフォームに依存しないコメントも含まれています。 –

答えて

0

ファイルからいくつかの行を読み込んで別のファイルに書き込もうとしていると思います。出力ファイルでは、すべてのコードを1行で取得します。

私はバグがこのコードにあると思います。

while ((s = br.readLine()) != null) { 
    totalStr += s; 
} 

入力ファイルから行を読み込んだ後に改行文字を追加するステートメントを追加する場合は、必要な出力が得られます。

while ((s = br.readLine()) != null) { 
    totalStr += s; 
    totalStr += "\n"; 
} 

次のコードは、ファイルの末尾に改行文字を追加します。 bw.newLine();

0

あなたはtrue引数がBufferedWriterコンストラクタでやっていることをどう思いますか? second and optional argumentは、バッファサイズの整数です。むしろあなたが何か奇妙なことをしない限り、おそらくその議論を提供する必要はありません。第二ブール引数を持つオプションはあり

public BufferedWriter(Writer out) //sz = defaultCharBufferSize = 8192 
public BufferedWriter(Writer out, int sz) //sz Output-buffer size, a positive integer 

ではありません:

try (BufferedWriter bw = new BufferedWriter(new FileWriter(NewCSVFile))) 
+0

この行でも同じ結果が得られました。新しい行はありません。 – LKNProgrammer

0

BufferedWriterのはわずか2つのコンストラクタを持っています。あなたのケースでは、最初のコンストラクタを使用することをお勧めします。