問題タブ [binarywriter]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 単純な BinaryWriter および BinaryReader での EndOfStreamException
私は次のコードを使用しています:
ただし、次の例外が発生します。
読み取る前binaryReader.BaseStream.Length
は 0 より大きいが、binaryReader.PeekChar()
-1 を返す。
私は何を間違っていますか?
c# - 読み取り/書き込み操作中に閉じたファイルにアクセスできない - C#
私はインターネットを検索し、多くの投稿を見ましたが、どれも私を助けませんでした. そこで、ここで自分の質問をすることにしました。
フォームの保存ボタンがクリックされたときにバイナリファイルにデータを書き込み、フォームからファイルが開かれたときにファイルからそのデータを読み取ります。データには、いくつかのテキスト ボックスと 2 つのリストからのテキストが含まれます。次のコードを持つ保存メソッドを作成しました。
次のコードを持つリストを作成する別の一般的な方法があります。
リストが 2 つあるため、次の 2 行を Save メソッドのwriter.Close()
行の前に追加し、最初のコードを次のように変更します。
問題は、コードが に到達するR.Write(Nrows);
と、 がスローObjectDisposedException
され、閉じられたファイルにアクセスできないと表示されることです。この時点でファイルが閉じられる原因は何ですか? また、ファイルが閉じないようにするにはどうすればよいですか?
読み取りは書き込みと同じパターンを使用するため、読み取り中に同じ問題が発生します。
java - Java - 7 ビットでエンコードされた長さのプレフィックスを付けた文字列を書き込みます
Java の文字列に対する C# の BinaryWriter の Write 関数を再作成しようとしています。
C# メソッドは、7 ビット形式でエンコードされた文字列の長さを書き込み、次に文字列を書き込みます。これをJavaで実装する方法はありますか?
私はそれをそのように実装しようとしましたが、成功しませんでした:
serialization - BinaryWriter を使用してジャグ配列をシリアル化する効率的な方法
スタックオーバーフラワー。
基本的に、これについてどのように進めるべきかについて誰かがヒントを持っているかどうか疑問に思っています. BinaryWriter を使用して、通常のプリミティブ型を既にシリアル化しています (長さのプレフィックスとしてバイト配列を使用)。通常、私は持っているprimitivetypesディクショナリに別のエンティティを追加するだけですが、不定のギザギザ配列をシリアル化できるようにしたいと考えています。System.Byte[][]
または_System.Byte[][][][][][]
すべての配列の長さにプレフィックスを付ける方法と、デシリアライザーに配列の配列がいくつあるかを伝える方法が必要です。
これを行う良い方法を考えているだけですが、一日中試しています。
私が思いついたもののほんの一部です(完全ではありませんが、私の概念的なアプローチを理解できるかもしれません)。
ディスカッションに参加していただき、解決策を見つけられることを願っています。
c# - C# バイナリ ライター ushort バイト順
D で記述されたサーバー側アプリがあり、クライアント アプリは C# で記述されています。それらの間の通信に BinaryWriter を使用していますが、バイトオーダーに問題があります。
実際には、バイトの順序は同じではありません。例:
C# クライアント:
クライアント出力:
サーバー出力:
クライアントの場合、最初の 2 バイトが反転され、サーバー アプリの文字列ushort
の長さがエンコードされます。BinaryWriter の動作を「変更」することは可能ですか、それとも独自の実装を作成する必要がありますか?
編集: サーバー側のパケットシリアライザー: https://github.com/Adwelean/EmperadorServer/blob/master/source/vendor/cerealed/cerealiser.d
c# - ファイルをzipファイルに追加する際にC#でBinaryWriterを使用してメモリ不足になる
ディレクトリを保持したまま、ファイルを Zip ファイルに追加しようとしています。以下のコードは、圧縮する数 100 Mb のファイルがない限り、基本的に機能します。約 250 Mb のファイルを 1 つ含むディレクトリを zip すると (メモリが十分にあるシステム上で)、その行で OutOfMemory 例外が発生しwrite.Write()
ます。
ファイル全体の読み取り/書き込み時に最初に失敗したため、チャンクで読み取るようにコードを既に変更しました。なぜまだ失敗するのかわかりませんか?
EDIT:Arkadiusz Kは、ライターではなくリーダーでフラッシュを使用したことは正しかった。それを変更した後、プログラムは最初に 100 Mb で停止した場所で 1 Gb 以上のファイルを圧縮します。ただし、たとえば 6 Gb ファイルを圧縮しようとすると、別の例外が発生します。次のように停止します: System.IO.IOException was unhandled Stream was too long Source=mscorlib StackTrace: at System.IO.MemoryStream.Write(Byte[] buffer 、Int32 オフセット、Int32 カウント) (など)
なぜまだ失敗するのか、誰にも分かりますか?コードは一度に 1 Kb を適切に読み書きする必要があると思いますか?