[英]Binary Reading of Bytes Returning only One Value. C#
當我期待0,1,2,3時,控制台顯示0,0,0,0。
這是以下版本的修改版本: https : //msdn.microsoft.com/en-us/library/system.io.binarywriter(v=vs.110).aspx
using System;
using System.IO;
namespace testingfilereadwrite
{
class Program
{
const string FileName = "TestFile.dat";
static void Main()
{
WriteDefaultValues();
DisplayValues();
Console.ReadKey();
}
public static void WriteDefaultValues()
{
using (BinaryWriter writer = new BinaryWriter(File.Open(FileName, FileMode.Create)))
{
writer.Write(0);
writer.Write(1);
writer.Write(2);
writer.Write(3);
}
}
public static void DisplayValues()
{
byte byte1;
byte byte2;
byte byte3;
byte byte4;
if (File.Exists(FileName))
{
using (BinaryReader reader = new BinaryReader(File.Open(FileName, FileMode.Open)))
{
byte1 = reader.ReadByte();
byte2 = reader.ReadByte();
byte3 = reader.ReadByte();
byte4 = reader.ReadByte();
}
Console.WriteLine(byte1);
Console.WriteLine(byte2);
Console.WriteLine(byte3);
Console.WriteLine(byte4);
}
}
}`
為什么它只顯示0? 如何讓它顯示我需要的東西? 另外,為什么當我使用字節以外的東西時,它會起作用,比如string或int。
因為您正在向文件寫入整數,並且前4個字節為0。
public static void WriteDefaultValues()
{
using (BinaryWriter writer = new BinaryWriter(File.Open(FileName, FileMode.Create)))
{
writer.Write((byte)0);
writer.Write((byte)1);
writer.Write((byte)2);
writer.Write((byte)3);
}
}
試試吧。
當您寫入數據文件時:
public static void WriteDefaultValues()
{
using (BinaryWriter writer = new BinaryWriter(File.Open(FileName, FileMode.Create)))
{
writer.Write(0);
writer.Write(1);
writer.Write(2);
writer.Write(3);
}
}
你實際上是在寫一個整數(4個字節)給你的文件。
因此,當您閱讀時,您會讀取文件的前4個字節,這是您寫的零(0x00,0x00,0x00,0x00)。 在您的write方法中,將值轉換為一個字節,您將獲得預期的結果。
public static void WriteDefaultValues()
{
using (BinaryWriter writer = new BinaryWriter(File.Open(FileName, FileMode.Create)))
{
writer.Write((byte)0);
writer.Write((byte)1);
writer.Write((byte)2);
writer.Write((byte)3);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.