在Windows 8中使用DataReader加载二进制文件

时间:2012-10-26 09:15:46

标签: c# windows file-io binaryfiles datareader

我正在尝试将我的旧游戏转换为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,只有两个非常大的数字。所以,我错过了这个,现在你是怎么做到的?我也试图弄清楚使用字符串的最佳方法,我想现在也要编写字节长度,因为它在我读取时要求“codeUnitCount”?

似乎所有东西都是旧二进制阅读器的退步。

0 个答案:

没有答案