1

古いゲームを Windows 8 に変換しようとしていますが、ファイルの読み込みに問題があります。DataReader で簡単なテストを試みていますが、正しい値が得られません。

まず、次のように書きます。

StorageFolder folder = ApplicationData.Current.LocalFolder;
        StorageFile file = await folder.CreateFileAsync("file.dat",CreationCollisionOption.ReplaceExisting);

        using (IRandomAccessStream fileStream = await file.OpenAsync(FileAccessMode.ReadWrite))
        {
            using (IOutputStream outputStream = fileStream.GetOutputStreamAt(0))
            {
                using (DataWriter writer = new DataWriter(outputStream))
                {
                    try
                    {
                        writer.UnicodeEncoding = UnicodeEncoding.Utf8;
                        writer.ByteOrder = ByteOrder.LittleEndian;
                        writer.WriteInt32(1);
                        writer.WriteInt32(2);
                        await writer.StoreAsync();
                        writer.DetachStream();
                    }
                    catch (IOException)
                    {

                    }    
                }
            }
        }

それから私は読んだ

        StorageFolder folder = ApplicationData.Current.LocalFolder;
        StorageFile file = await folder.GetFileAsync("file.dat");

        using (var fileStream = await file.OpenReadAsync())
        {
            using (IInputStream inputStream = fileStream.GetInputStreamAt(0))
            {
                using (DataReader reader = new DataReader(inputStream))
                {
                    reader.UnicodeEncoding = UnicodeEncoding.Utf8;
                    reader.ByteOrder = ByteOrder.LittleEndian;
                    await reader.LoadAsync((uint)fileStream.Size);
                    var number = reader.ReadInt32();
                    var number2 = reader.ReadInt32();
                    reader.DetachStream();
                }
            }
        }

しかし、読んだときに 1 と 2 は得られず、2 つの非常に大きな数だけが得られます。それで、私がこれを逃したのは、今あなたがそれをどのように行うかです? また、文字列を操作する最善の方法を見つけようとしています。読み取り時に「codeUnitCount」を要求するので、バイト長も書き込むと思いますか?

すべてが古いバイナリ リーダーから後退しているように見えます。

4

0 に答える 0