当前位置:编程学习 > C#/ASP.NET >>

C#中,如何在FileStream中插入字符?

最近想自己做一个电子书阅读器。
在把某个TXT文件排版前,想先简单地按字数把文件分个页(其实就是简单地隔开方便后面处理)。

代码如下:

        /// <summary>
        /// 自动加页码分隔
        /// </summary>
        /// <param name="多少个字一页"></param>
        /// <param name="文件路径"></param>
        private void Int_Config(int Words,string Path)
        {
            //1.开一个文件流
            FileStream fs = new FileStream(Path, FileMode.Open, FileAccess.ReadWrite);

            //如果字数达到有必要分页的标准
            if (fs.Length > Words)
            {

                //2.利用流来修改文本
                int num = 0;
                for (long i = Words; i <= fs.Length - 1; i += Words)
                {
                    //i.规定插入的页码数字
                    num++;

                    //ii.需要输入的内容(想要的效果:页码数字+空一行)
                    string InPut = "\r\n" + num.ToString() + "\r\n" + "\r\n";

                    //iii.转化成字节内容
                    byte[] InByte = Encoding.Default.GetBytes(InPut);

                    //iv.将所有内容写入指定位置
                    fs.Seek(i, SeekOrigin.Begin);
                    fs.Write(InByte, 0,InByte.Length);

                    //v.修改当前位置和末尾
                    i = i + 7;
                    fs.SetLength(fs.Length + 7);
                }
            }

            //关闭流
            fs.Close();
        }


完了之后就粗问题了= =


1.为什么会出现这样的乱码?莫非编码方式没弄好?应该怎么改一下?
2.这个write方法是写入(从相应位置开始写,覆盖掉原本内容)还是插入(不影响原文内容)?
--------------------编程问答--------------------
//iii.转化成字节内容
                    byte[] InByte = Encoding.Default.GetBytes(InPut);

1、出现乱码的话  你设置下这里的编码方式看看。
2、具体不清楚,你完全可以测试下就知道了 --------------------编程问答-------------------- 你这么写的话,是覆盖模式,把原有的字覆盖一半,不就乱了。

--------------------编程问答-------------------- 你的这个 int Words 是什么意思啊?自己胡思乱想一个 int ? --------------------编程问答-------------------- 参考下1楼的意见吧,你的编码格式不对,你看下你的txt文本是什么格式的编码 --------------------编程问答-------------------- 你从人家一个字符中间插入数据当然会导致后面的编码都串了。 --------------------编程问答-------------------- 既然是流,就不能插入,除非读取流到你要的位置,加上你的数据,再加上流后面的数据,而且要注意编码。 --------------------编程问答--------------------
引用 3 楼 sp1234 的回复:
你的这个 int Words 是什么意思啊?自己胡思乱想一个 int ?

表示多少个字一页,比如每500个字一分隔就是words = 500
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,