现在我有个二进制的文件,是由一个十进制文件转换的。现在我只想读取这个二进制文件的一部分,之后再转换成十进制的文件。有办法实现吗?
比如说十进制的文件内容:【折戟沈沙铁未销,自将磨洗认前朝。】
【东风不与周郎便,铜雀春深销二乔。】现在我已经保存在一个二进制的文件里。
但是我只想读取到这个二进制的一半。
即这个二进制转换成的十进制文件内容:
【折戟沈沙铁未销,自将磨洗认前朝。】

解决方案 »

  1.   

    可以把这个二进制文件读出来,转成string,看看哪些是你需要的。
    string s = new string(byte[] buffer);
    你所说的文件读一半是指文件长度的一半吗?
      

  2.   

     
            /// <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;
            }这种方法行不通
      

  3.   

    分两行存 然后sr.ReadLine()只读一行行不行呢?
      

  4.   


    如果有一个 sr.WriteLine() 的话,这个办法我看行了
      

  5.   

    我对你这个十进制文件的说法很费解,你应该是想说文本文件吧。
    文件都是以二进制的形式来存储的,你这样的文件用readline之类来直接读应该是没有问题的
      

  6.   

    你的这个文本是自己写的吗?写进去的时候直接写字符串,和把字符串转化为byte数组再写其实是一样的
      

  7.   

    fs.Read(data, offset, remaining);没有fs.ReadLine 方法
      

  8.   


    这个是把文本文件转换成二进制数组后,再写入文件的方法:
      /// <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;
            }
      

  9.   

    如果只是单纯的把string转化成byte[]的话new StreamReader(xxx).ReadLine();应该没问题的
      

  10.   

    StreamReader.ReadLine();读取的是一行~返回的是字符串~