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文本是什么格式的编码 --------------------编程问答-------------------- 你从人家一个字符中间插入数据当然会导致后面的编码都串了。 --------------------编程问答-------------------- 既然是流,就不能插入,除非读取流到你要的位置,加上你的数据,再加上流后面的数据,而且要注意编码。 --------------------编程问答--------------------
表示多少个字一页,比如每500个字一分隔就是words = 500
补充:.NET技术 , C#