110,536
社区成员
发帖
与我相关
我的任务
分享
/// <summary>
/// 以二进制形式将数据写入文件
/// </summary>
/// <param name="fileName">要写入的文件地址</param>
/// <param name="data">要写入的数据</param>
/// <returns>是否成功</returns>
public static bool WriteFileByByte(String fileName, Byte[] data)
{
bool result;
result = true;
try
{
//以独占方式打开这个文件
FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write, FileShare.None);
try
{
fs.Write(data, 0, data.Length);
fs.Dispose();
}
catch
{
fs.Dispose();
FileInfo fi = new FileInfo(fileName);
fi.Delete();
result = false;
}
fs.Dispose();
}
catch (Exception e)
{
Console.WriteLine(e.Message);
result = false;
}
return result;
}
fs.Read(data, offset, remaining);
/// <summary>
/// 用二进制方式读取文件
/// </summary>
/// <param name="fileName">文件名</param>
/// <returns>读取到的数据</returns>
public static Byte[] ReadFileByByte(String fileName)
{
//以独占方式打开一个文件
FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.None);
//创建一个Byte用来存放读取到的文件内容
Byte[] data = new Byte[fs.Length];
//定义变量存储初始读取位置
int offset = 0;
//定义变量存储当前数据剩余未读的长度
int remaining = data.Length/2;
try
{
while (remaining > 0)
{
int read = fs.Read(data, offset, remaining);
if (read <= 0)
throw new EndOfStreamException("文件读取到" + read.ToString() + "失败!");
// 减少剩余的字节数
remaining -= read;
// 增加偏移量
offset += read;
}
}
catch (Exception e)
{
data = null;
errorMsg = e.Message;
}
fs.Dispose();
return data;
}