2016-05-29 11 views
1

私は、オンラインテキストファイル(www.mysite.com/filedata.txt)からテキストを取得し、別のファイルに上書きします。VB.NETはファイルの最初の行に書き込みます

すべて機能しますが、問題は1つのみです。すべてが最初の行に書かれていて、元の書式ではありません。

例:

から:

Hello 
Hi 
Hi 

へ:

ここ
HelloHiHi 

は、私が使用している正しいコードのほんの一例ですが、それは動作しません。

Using client As New WebClient() 
    client.DownloadFile("http://www.mystie.com/filedata.txt", 
     Application.StartupPath & "\file.txt") 
End Using 
+3

私は本来の形式であるとは思っていますが、その形式では改行として '\ n'を使用しています。 UnixとWindowsの改行の両方を処理できるSublime Textのようなエディタでファイルを開いてみてください。 –

+0

ありがとう!試してみます。 – Netero

+1

ダウンロードしたファイルを投稿できますか? –

答えて

3

ファイルでは、編集コントロールで認識されない別のline-break styleが使用されています。

Windowsスタイル(CR   LF)、Unixスタイル(LF)、および従来のMacスタイル(CR)の3種類の改行スタイルがあります。

TextBoxコントロールのようなWindowsコントロールには、当然WindowsスタイルCR   LFが必要です。 C#の対応するエスケープ文字は\r\nです。 VBでは、ControlChars.CrLfまたはvbCrLfを使用します。 Unixでは、LF(\n、またはControlChars.Lf/vbLf)がより一般的です。インターネットなどの外部ソースからファイルを取得している場合は、Unixスタイルの改行が使用されている可能性があります。改行は、Windows TextBoxコントロールによって改行として認識されません。あなたが「高度なテキストエディタ」と呼んでいるのは、すべてこれらの異なるスタイルの改行文字をサポートしているからです。

これは修正するのが非常に簡単です。 TextBoxに表示する前に、LFをCR + LFに置き換えて文字列を置換します。

' Download the file 
Dim path As String = Application.StartupPath & "\file.txt" 
Using client As New WebClient() 
    client.DownloadFile("http://www.mystie.com/filedata.txt", path)) 
End Using 

' Read the file's text in as a string 
Dim filedata As String = File.ReadAllText(path) 

' Fix up the line endings 
filedata = filedata.Replace(ControlChars.Lf, ControlChars.CrLf) 

' Display the text in your TextBox 
myTextBox.Text = filedata 
+0

このような驚くほどよく解説された、ありがとうございました! – Netero

0

私はevを解決することができましたテキストボックスからリッチテキストボックスに切り替えることでエラーが発生します。

関連する問題