2009-05-25 14 views
2

テキストファイルにテキストを書き込むのにテキストを使用していますが、行が1024文字を超えると改行が挿入され、これが問題です。どのようにこれを回したり、文字の制限を増やすかについての提案はありますか?C#TextWriterは1024文字ごとに改行を挿入します

textWriter.WriteLine(strOutput); 

感謝

+0

strOutputがどこから来ているのかを表示できますか?それはバッファから来ますか?もしそうなら、そのバッファはどのように満たされ、どれくらいの大きさですか? –

+0

あなたはメモ帳でテキストファイルを表示していますか? –

答えて

4

1025文字列の書き込みと読み取りを行うサンプルアプリケーションを作成しました。サイズは変わりません。 notepad.exe(Windows)で開くと、2行目に余分な文字が表示されますが、これらはメモ帳の制限のようです。ここに私のサンプルコードがあります

static void Main(string[] args) 
    { 
     using (TextWriter streamWriter = new StreamWriter("lineLimit.txt")) { 
      String s=String.Empty; 
      for(int i=0;i<1025;i++){ 
       s+= i.ToString().Substring(0,1); 
      } 
      streamWriter.Write(s); 
      streamWriter.Close(); 
     } 
     using (TextReader streamReader = new StreamReader("lineLimit.txt")) 
     { 
      String s = streamReader.ReadToEnd(); 
      streamReader.Close(); 
      Console.Out.Write(s.Length); 
     } 
    } 
+0

うん、これはうまくいくかもしれません。言い換えれば、問題は最初に存在しませんでした。 –

+0

notepadの制限だったので、notepad2は完全にあなたの時間に感謝します。とても有難い。 –

5

は、さてあなたはstrOutput\r\nを追加しTextWriter.WriteLine(string)を使用しているWriteLineメソッドではありません。ドキュメントが言うように:

は、テキストストリームに行終端に続く文字列を書き込みます。

(強調する鉱山)それは1024文字とは関係ありませんが、私が推測しているのは、(1024文字のバッファを使って)読み込んでいるからです。

だけ

textWriter.Write(strOutput); 

EDITを使用して、余分な改行を避けるために:あなたは「フルラインが書き込まれた」あとに改行を必要とするコメントに言う - しかし、それはstrOutput ISNのように聞こえます常に同じ行です。

「コピー」側を「改行」側から切り離すことが最も簡単な方法です。コピーしたいすべてのテキストにWriteを使用して、あなたは改行をしたいときにちょうど

textWriter.WriteLine(); 

を呼び出します。これで解決できない場合は、より多くの文脈が必要になると思います。あなたが行っていることを正確に示すサンプルを提供してください。

+1

これはまさに問題であるようです。確かに、1024(または任意の)制限を課すTextWriter/StreamWriterクラスには本質的なものはありません。 – Noldorin

+0

ジョンさん、ありがとうございました。完全な行が.Write(strOutput)を使って書かれた後に改行を挿入する必要があります。これを行う最善の方法は何でしょうか?ありがとう –

+0

私はそれを反映するために私の答えを編集しました。 –

0

出力の最後に改行を追加する必要がある場合は、追加するだけです。

textWriter.Write(strOutput +"\r\n"); 
関連する問題