其实还有一个解决方法,你可以把它放在一个ListView或者RichText中然后对指定的行进行你所说的操作,当完成后再用保存的方法把它保存

解决方案 »

  1.   

    以ReadLine读取到String【】上就可以了
      

  2.   

    有个笨办法,不知道你要不要:
    如何指定读取文件某一行的信息?如何改写某一行的信息上?如何删除某一行的信息?如何在某一行前插入一个新的行先将文件信息读入ArrayList,直接对ArrayList操作,具体代码如下:
    using System;
    using System.IO;
    using System.Collections;
    using System.Text;
    public class LinesOperator
    {
    ArrayList lines = null;
    String fileName = null;
    public static void Main(String[] args)
    {
    LinesOperator lo = new LinesOperator("test.txt");
    lo.DeleteLine(0);
    } public LinesOperator(String filename) {
    fileName = filename;
    Init();
    } void Init() {
    lines = new ArrayList();
    StreamReader sr = new StreamReader(fileName, Encoding.Unicode);
    String str;
    while ((str = sr.ReadLine()) != null) {
    lines.Add(str);
    }
    sr.Close();
    }

    void Save() {
    StreamWriter sw = new StreamWriter(fileName, false, Encoding.Unicode);
    for (int i = 0; i < lines.Count; i++) {
    sw.WriteLine((String) lines[i]);
    }
    sw.Close();
    } void DeleteLine(int index) {
    lines.RemoveAt(index);
    Save();
    } void InsertLine(int index, String line) {
    lines.Insert(index, line);
    Save();
    } void UpdateLine(int index, String line) {
    lines[index] = line;
    Save();
    }
    }
      

  3.   

    还有个读行:
    void ReadLine(int index) {
    return lines[index];
    }
      

  4.   

    以上的做法,如果文件较大,效率会不会比较低?
    用filestream之类的能实现文件指标定位吗?另:如何删除一行呢?
      

  5.   

    不知道行不行从文本文件读取行信息 
     --------------------------------------------------------------------------------
     
    作者:wyhw  发表时间:2003-5-15   推荐程度: ★   查看作者信息以及作者文集 
     
     
    作者:罗会涛
    运用StreamReader从一个标准的文本文件读行信息。  StreamReader srReadLine = new StreamReader(
                (System.IO.Stream)File.OpenRead("C:\\Temp\\Test.txt"),
             System.Text.Encoding.ASCII);
             srReadLine.BaseStream.Seek(0, SeekOrigin.Begin);
             while (srReadLine.Peek() > -1) {
                Console.WriteLine(srReadLine.ReadLine());
             }
             srReadLine.Close();
      

  6.   

    这不是删除的方法吗?
    void DeleteLine(int index) {
    lines.RemoveAt(index);
    Save();
    }实际上,我用java将微软的IO包重新实现了,所以对这个包能做什么不能做什么很清楚。
    FileStream是对文件的直接的字节流操作,一般来说不会丢失数据,用的是缓冲存数据,它虽然可以同时读和写,但那只是对字节流而言,与行无关;它虽然可以定位,但那只是对字节而言,也与行无关;它不能插入数据,只能追加和替换一段字节流,这也与行无关;它也不能删除中间的一段数据,只能截断文件尾的数据。也就是说它的操作与行完全无关。
      

  7.   

    还有就是StreamReader最好用Unicode编码,不会丢失数据。像有些编码如果遇到非法字符,就会用个特殊字符替代(一般用"?"),这样的话,这个数据就丢失了。
      

  8.   

    to xixigongzhu(夕夕公主): 我今天大致看了下streamReader和streamWriter的源码,发现好像也只有你的办法可行了。 其实我昨天也用差不多的方法实现了这个功能。思路和你是完全一样的,只不过我先 string s = StreamReader.ReadtoEnd();然后再 string [] r = s.split('\n') 处理完了再StreamWriter一行一行写进去。但是总觉得如果这样做,文件较大的话,效率很低。但如果要在FileStream上实现,又要牵涉到encoding之类的,实在超出我的能力范围。嗯 如果没有更好的办法,我明天来结这个帖吧。
      

  9.   

    我觉得文本文件处理起来很垃圾,感觉StreamReader和StreamWriter没有支持行用起来很不方便。估计也是实现起来很困难。所以微软干脆不做了。
       所以只好,读,改,写。
       整个儿处理一遍。
       感觉很不爽。
       非常不爽。
       决定转向XML。
       从此不用TXT。
      

  10.   

    是啊
    其实我也就是闲着没事写一个留言本程序,本来我也是为了图方便用文本文件放数据,没想到只有烦 faint下次吸取教训,直接用XML或者干脆access的数据得了。