2011-01-22 5 views
2

readbleではなかったと私は(ストリームがreadbleませんでした)この行を実行中にエラーを得SR = New StreamReader(FS)理由とエラーストリームは、私は以下のコードを書いた

コードそれを修正する方法:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
    Dim FS As FileStream 
    Dim SR As StreamReader 
    Dim SW As StreamWriter 
    Dim FS_Out As FileStream 
    FS = New FileStream("C:\Temp\My Picture.JPG", System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Write) 
    SR = New StreamReader(FS) 
    FS_Out = New FileStream("C:\Temp\My Picture Out.JPG", FileMode.Create, FileAccess.ReadWrite) 
    SW = New StreamWriter(FS_Out) 

    Dim alltext As String 
    FS.Seek(0, SeekOrigin.Begin) 
    alltext = SR.ReadToEnd() 

    'SW.Write (Buffer) 



    SR.Close() 
    FS.Close() 


End Sub 

答えて

2

はまあ、あなたが求めてきたものを見てください。読書については何もない。

今のところ、jpegファイルにStreamReaderStreamWriterを使用しようとしています。 しないでください。写真はバイナリファイルです。 TextReaderおよびTextWriter(およびそのサブクラス)は、テキストファイルです。画像の文字列表現はどのように見えますか?

次に、例外が発生した場合でもストリーム/リーダー/ライターを閉じるために、"Using" statementsを使用する必要があります。

次に、ほとんどの場合、ファイルのストリームまたはリーダーを開くために、Fileクラスの静的メソッドを使用するのが最も簡単です。その方法では、使用する方法によってストリームで何をしたいかがわかります。 File.OpenRead,File.OpenWrite,File.ReadAllTextなど

次に、実際にファイルをコピーする場合は、File.Copyを使用できます。すべてのデータをメモリにコピーする場合は、File.ReadAllBytesFile.WriteAllBytesを使用することができます。つまり、自分自身でストリームを混乱させる必要はありません。

0

それをFSのモードが不一致であると思われる場合は、FileAccess.ReadWriteにする必要があります。あなたが書き込み用のファイルを開くか、または作成するように求めてきました

FS = New FileStream("C:\Temp\My Picture.JPG", _ 
        FileMode.OpenOrCreate, FileAccess.Write) 

0

FSを「書き込み」フラグだけを開いてから読み込みます。個人的に私はいつもFile.OpenReadFile.OpenWriteなどを使用しています - より簡単にがより明確になります。

関連する問題