现在我有个二进制的文件,是由一个十进制文件转换的。现在我只想读取这个二进制文件的一部分,之后再转换成十进制的文件。有办法实现吗?
比如说十进制的文件内容:【折戟沈沙铁未销,自将磨洗认前朝。】
【东风不与周郎便,铜雀春深销二乔。】现在我已经保存在一个二进制的文件里。
但是我只想读取到这个二进制的一半。
即这个二进制转换成的十进制文件内容:
【折戟沈沙铁未销,自将磨洗认前朝。】
比如说十进制的文件内容:【折戟沈沙铁未销,自将磨洗认前朝。】
【东风不与周郎便,铜雀春深销二乔。】现在我已经保存在一个二进制的文件里。
但是我只想读取到这个二进制的一半。
即这个二进制转换成的十进制文件内容:
【折戟沈沙铁未销,自将磨洗认前朝。】
string s = new string(byte[] buffer);
你所说的文件读一半是指文件长度的一半吗?
/// <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;
}这种方法行不通
如果有一个 sr.WriteLine() 的话,这个办法我看行了
文件都是以二进制的形式来存储的,你这样的文件用readline之类来直接读应该是没有问题的
这个是把文本文件转换成二进制数组后,再写入文件的方法:
/// <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;
}