输出到文件的一种方式
还是这个拆分词条的工具,最后要输出到txt里,每2K条一个文件.
这是我实现输出到文件的一种方式:
1 while ((s = sr.ReadLine()) != null) 2 { 3 ct=s.Split('\t'); 4 if (ct.Length <= 2) break; 5 if ((n++) % numoflines == 0) 6 { 7 t++; 8 path = src + t + ".txt"; 9 using (StreamWriter sw = File.CreateText(path)) 10 { 11 // sw.Write(s); 12 } 13 } 14 15 FileInfo finfo = new FileInfo(path); 16 using (FileStream fs = finfo.OpenWrite()) 17 { 18 StreamWriter w = new StreamWriter(fs); 19 20 w.BaseStream.Seek(0, SeekOrigin.End); 21 //if (n % numoflines == 0) 22 w.Write(s); 23 if (addone==1) 24 w.Write("\t1"); 25 if(n%numoflines!=0) 26 w.Write("\r\n"); 27 w.Flush(); 28 w.Close(); 29 30 } 31 32 }
*numoflines是可以设置的每个文件的行数;
*StreamWriter sw = File.CreateText(path) 创建一个指定路径的文件
*sw.Write(s); 输出s到文件中,但是要覆盖文件中原来的内容;
*FileInfo 初始化 FileInfo 类的新实例,它作为文件路径的包装。
*OpenWrite() 创建只写 FileStream;
*BaseStream.Seek(0, SeekOrigin.End); 这部分参见知道网友iceser的回答
*第一个参数为a,第二个为b;
*b为文件中绝对位置
*SeekOrigin.End:文件结尾;
*SeekOrigin.Begin:文件开始
*SeekOrogin.Current:文件当前位置;
*a为相对于b的位置,可正可负.
*我这里的表示就是w的输出在文件的结尾;
*w.write("");写入balabala
*w.Flush():清理当前编写器的所有缓冲区,并使所有缓冲数据写入基础流。
*w.Close():关闭当前的 StreamWriter 对象和基础流.
部分构造函数:
*StreamWriter(Stream, Encoding):用指定的编码及默认缓冲区大小,为指定的流初始化 StreamWriter类的新实例。
*StreamWriter(String, Boolean):如果该文件存在,则可以将其覆盖或向其追加。 如果该文件不存在,则此构造函数将创建一个新文件。
*若要追加数据到该文件中,则为 true;若要覆盖该文件,则为 false。 如果指定的文件不存在,该参数无效,且构造函数将创建一个新文件。
*StreamWriter(String, Boolean, Encoding, Int32):使用指定编码和缓冲区大小,为指定路径上的指定文件初始化StreamWriter 类的新实例。 如果该文件存在,则可以将其覆盖或向其追加。 如果该文件不存在,则此构造函数将创建一个新文件。