Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
C# 構造体 バイナリーファイルの読み込みの件
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=30806#CommentId85468
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
ケンケン
 (社会人)
投稿日時
2022/10/19 15:37:03
ブロック読みに変えましたが、3件のデータが読みますが、一件目のみの内容しか表示されません。
string dataPath = Directory.GetCurrentDirectory() + @"\data\";
FileStream fs = new FileStream(dataPath + "Mydata.data", FileMode.Open, FileAccess.Read);
int fileSize = (int)fs.Length; // ファイルのサイズ
byte[] buf = new byte[fileSize]; // データ格納用配列
int readSize; // Readメソッドで読み込んだバイト数
int remain = fileSize; // 読み込むべき残りのバイト数
int bufPos = 0; // データ格納用配列内の追加位置
Console.WriteLine("remain:" + remain);
while (remain > 0)
{
// 528ytesずつ読み込む
readSize = fs.Read(buf, bufPos, Math.Min(528, remain));
Console.WriteLine("readSize:" + readSize);
bufPos += readSize;
remain -= readSize;
Console.WriteLine("bufPos:" + bufPos);
Console.WriteLine("remain:" + remain);
Form1.usrData Mydata;
int size = 528;
IntPtr ptr = Marshal.AllocHGlobal(size);
Marshal.Copy(buf, 0, ptr, size);
Mydata = (Form1.usrData)Marshal.PtrToStructure(ptr, typeof(Form1.usrData));
Console.WriteLine("id :" + Mydata.id);
Console.WriteLine("acc :" + Mydata.accID);
Console.WriteLine("name :" + Mydata.name);
Console.WriteLine("prof :" + Mydata.profileID);
Console.WriteLine("rev :" + Mydata.revDate);
Console.WriteLine("level:" + Mydata.userLevel);
}
fs.Dispose();
fs.Close();
Console.WriteLine("読み込み改終了");
}
どこを修正すれば良いですか?
ご知恵をお願い致します。