相关疑难解决方法(0)

StreamReader和寻求

你可以使用streamreader来读取普通文本文件,然后在保存当前位置后再读取流读取器,然后再次打开streamreader并开始读取该poision吗?

如果不是我可以使用什么来完成相同的情况而不锁定文件?

这样的事情:

 var fs = File.Open(@"C:\testfile.txt", FileMode.Open, FileAccess.Read);
        var sr = new StreamReader(fs);
        Debug.WriteLine(sr.ReadLine());//Prints:firstline
        var pos = fs.Position;
        while (!sr.EndOfStream)
        {
            Debug.WriteLine(sr.ReadLine());
        }
        fs.Seek(pos, SeekOrigin.Begin);
        Debug.WriteLine(sr.ReadLine());//Prints Nothing, i expect it to print SecondLine.
Run Code Online (Sandbox Code Playgroud)

@lasseespeholt

这是我试过的代码

            var position = -1;
        StreamReaderSE sr = new StreamReaderSE(@"c:\testfile.txt");
        Debug.WriteLine(sr.ReadLine());
        position = sr.BytesRead;
        Debug.WriteLine(sr.ReadLine());
        Debug.WriteLine(sr.ReadLine());
        Debug.WriteLine(sr.ReadLine());
        Debug.WriteLine(sr.ReadLine());
        Debug.WriteLine("Wait");
        sr.BaseStream.Seek(position, SeekOrigin.Begin);
        Debug.WriteLine(sr.ReadLine());
Run Code Online (Sandbox Code Playgroud)

c# streamreader

12
推荐指数
2
解决办法
4万
查看次数

如何知道文本文件中streamreader的位置(linenumber)?

一个例子(可能不是现实生活,但要说明我的观点):

public void StreamInfo(StreamReader p)
{
    string info = string.Format(
        "The supplied streamreaer read : {0}\n at line {1}",
        p.ReadLine(),
        p.GetLinePosition()-1);               

}
Run Code Online (Sandbox Code Playgroud)

GetLinePosition这是streamreader的虚构扩展方法.这可能吗?

当然,我可以自己计算,但这不是问题.

c# streamreader

9
推荐指数
4
解决办法
3万
查看次数

StreamReader获取并设置位置

我只想阅读一个大型CSV文件并将Stream位置保存在列表中.之后我必须从列表中读取位置并将Streamreader的位置设置为该char并读取一行!但在我读完第一行并返回streamposition后

StreamReader r = new StreamReader("test.csv");
r.readLine();
Console.WriteLine(r.BaseStream.Position); 
Run Code Online (Sandbox Code Playgroud)

我得到"177",这是文件中的总字符数!(这只是一个简短的示例文件)我没有在这里发现任何类似的东西,它帮助了我!

为什么?

完全方法:

private void readfile(object filename2)
{
    string filename = (string)filename2;
    StreamReader r = new StreamReader(filename);
    string _top = r.ReadLine();
    top = new Eintrag(_top.Split(';')[0], _top.Split(';')[1], _top.Split(';')[2]);
    int siteindex = 0, index = 0;
    string line;
    sitepos.Add(r.BaseStream.Position); //sitepos is the a List<int>

    while(true)
    {
        line = r.ReadLine();
        index++;
        if(!string.IsNullOrEmpty(line))
        {
            if (index > seitenlaenge)
            {
                siteindex++;
                index = 1;
                sitepos.Add(r.BaseStream.Position);
                Console.WriteLine(line);
                Console.WriteLine(r.BaseStream.Position.ToString());
            }
        }
        else break;
        maxsites = siteindex;
    }
    reading = …
Run Code Online (Sandbox Code Playgroud)

c# position stream streamreader

8
推荐指数
1
解决办法
3万
查看次数

标签 统计

c# ×3

streamreader ×3

position ×1

stream ×1