私はファイルを読み込み、2ブロックのデータを抽出しようとしています。ブロック1とブロック2は、ファイルに多数のデータブロックが含まれているファイルから呼び出します。両方のブロックは、バイト配列で返される である必要があります。ブロック1は、ファイル内のどこかで開始され、行の先頭には "block1:"と続き、読み取るバイト数が続きます。ブロック2は、必ずしも block1の後に出現するとは限らないが、ファイル内で「block2:」が始まり、次に読み取るバイト数が で始まる場所で始まります。私は最高で.Net 3.5に制限されています。ファイルからバイト配列を抽出する
答えて
あなたはFile.ReadAllBytes
を使用すると、あなたは彼らがしているインデックスを知っていればArray.Copy
オーバーロードのいずれかを使用して返さbyte[]
からあなたのブロックを抽出することができます。
をお使いのファイルのヘッダー情報の任意の並べ替えがなければ、あなたがする必要がありますファイル全体をスキャンし、block1:
またはblock2:
のマーカーを検索します。
更新:
は、ここではこれを行うだろうかのサンプル(必ずしも最適な実装)です:あなたがする必要がありますヘッダー情報なしで、他の人のよう
byte[] GetBlockOfData(string fileName, string blockName)
{
var allBytes = File.ReadAllBytes(fileName);
// Assuming block names are ASCII-encoded
var blockMarker = Encoding.ASCII.GetBytes(blockName + ":");
// Scan for the first byte of the marker
for (var i = 0; i < allBytes.Length; i++)
{
if (allBytes[i] == blockMarker[i])
{
// See if this is the entire marker
var isMatch == true;
for (var j = 0; j < blockMarker.Length; j++)
{
if (allBytes[i + j] != blockMarker[j])
{
isMatch = false;
break;
}
}
if (isMatch)
{
// Assuming it's a byte...
var blockLength = allBytes[i + blockMarker.Length];
var result = new byte[blockLength];
Array.Copy(
allBytes, i + blockMarker.Length + 1, result, 0,
blockLength);
return result;
}
}
}
return null;
}
返信いただきありがとうございます。同意する。これがどのように行われるかを示すサンプルコードがありますか? –
私の更新を参照してください。このコードではいくつかの前提がありますので、コメントを確認してください。 – Jacob
を言及しています少なくとも、あなたの「ブロック」マーカーを探している何らかのフィルタを使って、ファイルの内容をストリームします。
あなたはヘッダ情報を持っている場合(あるいはどこかのブロックマーカーのオフセットに、少なくともいくつかの情報)は、メモリマップドファイルを使用することができます。
これは、.NET 4.0が必要ですhttp://www.developer.com/net/article.php/3828586/Using-Memory-Mapped-Files-in-NET-40.htm
、 .NET 4を使用していない場合でもWin32 APIを使用することができます。
私は最高で.Net 3.5に制限されています。 Win32 APIを使用してこれがどのように行われるか、サンプルコードはありますか? –
- 1. バイト配列からビットを抽出する
- 2. Swift - AnyObjectからバイト配列を抽出する方法
- 3. バイト境界にないビット位置から開始するバイト配列からバイトを抽出する方法#
- 4. バイト配列から画像の幅、高さ、色、タイプを抽出
- 5. tarから単一のファイルをバイト/バイト配列として抽出するLinuxコマンド
- 6. ビット配列の元の形式のバイト配列からビット配列を抽出する方法
- 7. 配列からサブセットキーを抽出する
- 8. PowerShellを使用してバイト配列からGPS数値を抽出する
- 9. Java:オーディオファイルからバイトを抽出する
- 10. バイト配列から長いデータ型を抽出する方法は?
- 11. numpy配列から列を抽出する - unhashable配列
- 12. Scalaのファイルからバイトの範囲を抽出します
- 13. Python:3D配列から2D配列を抽出します。
- 14. api.aiからjsonレスポンス配列からテキストを抽出する
- 15. 配列からのプロパティの抽出
- 16. JSON配列からの値の抽出
- 17. セル配列からのデータの抽出
- 18. バイト配列のExcelファイルをバイト配列のPDFファイルに変換する
- 19. セル配列から文字列を抽出する
- 20. 配列から文字列ベースのオブジェクトを抽出する
- 21. JSONから文字列配列を抽出する
- 22. GAMSの行列から配列を抽出するには?
- 23. バイト配列からダブル配列
- 24. 2Dダブル配列からバイト配列へ
- 25. ASP.netのバイト配列からファイルを直接ポストする
- 26. .rawファイルから3Dバイト配列をロードする
- 27. MultipartFileからバイト配列
- 28. バイト配列からpdf
- 29. バイト配列からのボリューム
- 30. バイト配列の読み込みは、バイト配列をファイル
残念ながら、それらのインデックスはわかりません。 –
@Ray Bass - ブロックについて何を知っていますか?あなたはあなたの質問に本当に情報を提供していませんでした。それを編集して関連情報を追加して、人々が役に立つ回答を得られるようにしてください。 – Oded