投稿者 ケンケン  (社会人) 投稿日時 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("読み込み改終了");

        }

 どこを修正すれば良いですか?
 ご知恵をお願い致します。