2011-12-29 3 views
1

私は通常、私の.netアプリケーションでFileOpen、FileGet、およびFileCloseを使用しています。しかし、私は友人から、IOを速く使うべきだと言われ、全体的にはより良いものになっています。私はドキュメントを見てきましたが、まだ少し混乱しています。ここでは、ファイルバインダーのための私の元のコードは次のとおりです。FileOpenの代わりにFile I/O Help

'Opens file1 by user choice and gets contents 
FileOpen(1, TextBox1.Text, OpenMode.Binary, OpenAccess.Read, OpenShare.Default) 
filein = Space(LOF(1)) 
FileGet(1, filein) 
FileClose(1) 

'Opens file2 and gets contents 
FileOpen(1, Application.StartupPath & "\file2.exe", OpenMode.Binary, OpenAccess.Read, OpenShare.Default) 
file2 = Space(LOF(1)) 
FileGet(1, file2) 
FileClose(1) 

'Opens final file that will contain both binded files 
FileOpen(1, filename, OpenMode.Binary, OpenAccess.ReadWrite, OpenShare.Default) 
FilePut(1, file2 & filesplit & filein) 
FileClose(1) 

私は運でIO.File.WriteAllBytesとIO.File.WriteAllTextを使用しようとしました。 IOを使用するためにコードを変更するにはどうすればよいですか?おかげ

+1

あなたは、いくつかのためにあなたの友人に尋ねる必要があります。

Dim aBytes As Byte() = Nothing Using oStream As New FileStream(sFileName, FileMode.Open, FileAccess.Read) If oStream IsNot Nothing Then Dim wLen As Integer wLen = CInt(New FileInfo(PathName).Length) ReDim aBytes(wLen - 1) oStream.Read(aBytes, 0, wLen) oStream.Close() End If End Using 

ファイルにバイト配列を書き込むために証明。あなたが使うメソッドは 'System.IO'よりも抽象度の薄いレイヤーなので、メソッドの間にはほとんど期待していません。 – Oded

+2

最大の問題は、バイナリデータを文字列に格納していることです。文字列はvb.netで正規化され、データが破棄されます。バイト配列に切り替える必要があります。 –

答えて

0

ここでは、バイト配列にファイルを読み取るために使用できるコードです:

File.WriteAllBytes(sFileName, aBytes) 
関連する問題