记录一下,便于以后查阅
测试用Dictionary类型文件,同样用一个结构体的类型的数据结构也可以,只要文件中数据是有序的,则可以循环读写文件。
可读写的类型和方法
public virtual void Close();
public virtual void Flush();
public virtual long Seek(int offset, SeekOrigin origin);
public virtual void Write(double value);
[CLSCompliant(false)]
public virtual void Write(ulong value);
[CLSCompliant(false)]
public virtual void Write(uint value);
[CLSCompliant(false)]
public virtual void Write(ushort value);
public virtual void Write(string value);
public virtual void Write(float value);
[CLSCompliant(false)]
public virtual void Write(sbyte value);
public virtual void Write(long value);
public virtual void Write(int value);
public virtual void Write(char[] chars);
public virtual void Write(decimal value);
public virtual void Write(char[] chars, int index, int count);
public virtual void Write(char ch);
public virtual void Write(byte[] buffer, int index, int count);
public virtual void Write(byte[] buffer);
public virtual void Write(byte value);
public virtual void Write(bool value);
public virtual void Write(short value);
protected virtual void Dispose(bool disposing);
protected void Write7BitEncodedInt(int value);
public virtual void Close();
public virtual int PeekChar();
public virtual int Read();
public virtual int Read(byte[] buffer, int index, int count);
public virtual int Read(char[] buffer, int index, int count);
public virtual bool ReadBoolean();
public virtual byte ReadByte();
public virtual byte[] ReadBytes(int count);
public virtual char ReadChar();
public virtual char[] ReadChars(int count);
public virtual decimal ReadDecimal();
public virtual double ReadDouble();
public virtual short ReadInt16();
public virtual int ReadInt32();
public virtual long ReadInt64();
[CLSCompliant(false)]
public virtual sbyte ReadSByte();
public virtual float ReadSingle();
public virtual string ReadString();
[CLSCompliant(false)]
public virtual ushort ReadUInt16();
[CLSCompliant(false)]
public virtual uint ReadUInt32();
[CLSCompliant(false)]
public virtual ulong ReadUInt64();
protected virtual void Dispose(bool disposing);
protected virtual void FillBuffer(int numBytes);
protected int Read7BitEncodedInt();
//========================写入结构体=================================
public struct RF
{
public Vector3 vec;
public float Value;
}
public static void WriteList2BYTEFile(List<RF> input, string fname)
{
if (File.Exists(fname))
File.Delete(fname);
BinaryWriter bw = new BinaryWriter(new FileStream(fname, FileMode.Create));
foreach (var item in input)
{
bw.Write(item.vec.x);
bw.Write(item.vec.y);
bw.Write(item.vec.z);
bw.Write(item.Value);
}
bw.Close();
Debug.Log("创建完成," + fname);
}
//=================================================================
//==========================写入Dictionary============================
public static void WriteList2BYTEFile(Dictionary<Vector3, float> input, string fname){
if (File.Exists(fname))
File.Delete(fname);
BinaryWriter bw = new BinaryWriter(new FileStream(fname, FileMode.Create));
foreach (var item in input)
{
bw.Write(item.Key.x);
bw.Write(item.Key.y);
bw.Write(item.Key.z);
bw.Write(item.Value);
}
bw.Close();
Debug.Log("创建完成," + fname);
}
//=================================================================
{
if (!File.Exists(path))
return null;
Dictionary<Vector3, float> list = new Dictionary<Vector3, float>();
BinaryReader br = new BinaryReader(new FileStream(path, FileMode.Open));
try
{
while (true)
{
Vector3 vec = new Vector3(br.ReadSingle(), br.ReadSingle(), br.ReadSingle());
float power = br.ReadSingle();
list.Add(vec, power);
Debug.Log(vec + ", " + power);
}
}
catch(IOException e)
{
br.Close();
return list;
}
}