标签: textreader

使用StreamReader.EndOfStream的问题?

所以我正在做一个我在配置文件中读取的项目.配置文件只是一个字符串列表,如"D 1 1","C 2 2"等.现在我还没有在C#中进行过读/写操作,所以我在网上查找了它,期待找到某种类型的再现C/C++ .eof().我找不到一个.

所以我拥有的是......

TextReader tr = new StreamReader("/mypath");
Run Code Online (Sandbox Code Playgroud)

在网上我发现如何读到文件末尾的所有例子中,两个例子一直在发生

while ((line = tr.ReadLine() != null)
Run Code Online (Sandbox Code Playgroud)

要么

while (tr.Peek() >= 0)
Run Code Online (Sandbox Code Playgroud)

我注意到StreamReader有一个bool EndOfStream,但是没有人建议它让我相信这个解决方案有问题.我结束了这样尝试......

while (!(tr as StreamReader).EndOfStream)
Run Code Online (Sandbox Code Playgroud)

它似乎工作得很好.

所以我想我的问题是,我是否会遇到将TextReader转换为StreamReader并检查EndOfStream的问题?

.net c# file-io streamreader textreader

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

Ram中的C#2Gb文件是4gb.为什么?

我正在读取一个文件(该文件由一个长度为2GB的长字符串组成).

这是我的函数,它将文件的所有内容读入内存,然后拆分字符串并放置:*reader = StreamReader

public List<char[]> GetAllContentAsList()
        {
            int bytesToRead = 1000000;
            char[] buffer = new char[bytesToRead];
            List<char[]> results = new List<char[]>();

            while (_reader.Read(buffer, 0, bytesToRead) != 0)
            {
                char[] temp = new char[bytesToRead];
                Array.Copy(buffer,temp,bytesToRead);
                results.Add(temp);
            }

            return results;
        }
Run Code Online (Sandbox Code Playgroud)

当所有数据放入List时,RAM占用4gb.当文件大小只有2GB时,这怎么可能?

*编辑

这就是我最终做的事情.我没有将字节数组转换为字符串,我只是在操作它们时传递字节.这个场景只有2Gb而不是4gb

 public List<byte[]> GetAllContentAsList()
            {
                int bytesToRead = 1000000;
                var buffer = new byte[bytesToRead];
                List<byte[]> results = new List<byte[]>();

                while (_reader.Read(buffer, 0, bytesToRead) != 0)
                {
                    //string temp = Encoding.UTF8.GetString(buffer);
                    byte[] b = new byte[bytesToRead];
                    Array.Copy(buffer,b,bytesToRead);
                    results.Add(b);
                } …
Run Code Online (Sandbox Code Playgroud)

c# file filestream textreader

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

将 TextReader 流式传输到文件

我有一个TextReader对象。

现在,我想将 的全部内容流式传输TextReader到文件中。我不能ReadToEnd()一次全部使用和写入一个文件,因为内容可能很大。

有人可以给我一个示例/提示如何在 Blocks 中执行此操作吗?

c# stream textreader

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

来自网络的C#下载文件

有没有办法通过代理使以下功能工作?

public T[] ReadStream(System.IO.TextReader reader);

我希望能够代理reader实例,以便它可以在读取尝试时从Web下载文件并将其缓存到某处.

或者为此可能有默认值?

.net c# proxy download textreader

2
推荐指数
1
解决办法
4047
查看次数

TextReader类行数

你好.最近,我了解了该课程TextReader以及如何阅读文本文件.但是,有一些我不太了解的事情.

假设这是一个新对象:

TextReader TR = new StreamReader(@"C:\Users\Administrator\Desktop\Text1.txt");
Run Code Online (Sandbox Code Playgroud)

所以我想知道那里有多少个字母,所以我输入了这个,对吧?

Console.WriteLine(TR.ReadToEnd().Length);
Run Code Online (Sandbox Code Playgroud)

但是,它返回第一行的数字,它是当前的,但是当我添加新行时.无论是否输入任何内容,长度都会增加.假设\n这是一个新行的代码[也许我错了,但它有意义]

所以我需要减少这样的长度:

current length - line count*2
Run Code Online (Sandbox Code Playgroud)

所以我在我的文本文件中得到了正确数量的字母.问题是:我如何获得行数?

还有另一种检查字母数的方法吗?如果有,怎么样?无论如何,如何获取文本文件中的行数?

谢谢.=)

c# text lines count textreader

2
推荐指数
1
解决办法
1470
查看次数

C#类对象获取非托管资源的是什么?有清单吗?

当我看到这篇博客文章时,我正在使用XML来编写和反序列化类对象,该博客文章介绍了如何使用隔离存储区在Windows Phone 7上执行此操作.Windows Phone 7是我正在开发的平台:

此示例中,他显式调用Dispose()的唯一对象是TextReader对象.我在MSDN上查找了TextReader对象,发现文档说这个:

释放TextReader使用的非托管资源,并可以选择释放托管资源.

所以我假设他这样做的原因是立即释放TextReader对象获取的非托管资源.如果不是因为他的博客文章,我不会想到这样做.显然我不想开始在视线中的每个对象上调用Dispose(),所以至少在调查特定对象何时应该调用Dispose()时,有什么好的经验法则?是否有一些指南或某个列表,至少是需要这种特殊处理的流行.NET对象?

.net c# dispose unmanaged textreader

2
推荐指数
1
解决办法
1309
查看次数

读取文本文件C#

private void button1_Click(object sender, EventArgs e)
    {
        string fileLoc = @"c:\wms.txt";

        if (File.Exists(fileLoc))
        {
            using (TextReader tr = new StreamReader(fileLoc))
            {
                MessageBox.Show(tr.ReadLine());
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

这在我创建Windows应用程序时非常有效.

当我在设备应用程序中使用相同的代码时 - Windows CE我收到错误:

在此输入图像描述

使用:.Net 2.0,visual Studio 2005

c# streamreader windows-ce .net-2.0 textreader

2
推荐指数
1
解决办法
3061
查看次数

如何解析文本文件?

基本上我需要有人来帮助我或者给我看一些代码,这些代码可以让我从一个名为c1.txt的文件中读取名称和价格.

这就是我已经拥有的.

    TextReader c1 = new StreamReader("c1.txt");
        if (cse == "c1")
        {
            string compc1;
            compc1 = c1.ReadLine();
            Console.WriteLine(compc1);
            Console.WriteLine();
            compcase = compc1;
            compcasecost = 89.99;
        }
Run Code Online (Sandbox Code Playgroud)

如何选择一行来从文本文档中读取将是很好的.

.net c# streamreader textreader

1
推荐指数
1
解决办法
515
查看次数

Java文本输入:如何忽略以某些字符开头的行?

我基本上想要忽略某些带有字符的行,比如是否有一行

// hello, i'm bill
Run Code Online (Sandbox Code Playgroud)

我想在阅读时忽略该行,因为它包含字符"//".我怎样才能做到这一点?我尝试了方法skip(),但它给了我错误.

public String[] OpenFile() throws IOException {

  FileReader reader = new FileReader(path);
  BufferedReader textReader = new BufferedReader(reader);

  int numberOfLines = readLines();
  String[] textData = new String[numberOfLines];
  int i;

  for (i=0; i<numberOfLines; i++) {
      textData[i] = textReader.readLine();
  }

  // close the line-by-line reader and return the data
  textReader.close();
  return textData;
}

int readLines() throws IOException {
  FileReader reader = new FileReader(path);
  BufferedReader textReader = new BufferedReader(reader);
  String line;
  int numberOfLines = 0;

  while ((line = textReader.readLine()) …
Run Code Online (Sandbox Code Playgroud)

java lines textreader readfile

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

没有换行符的文本文件中是否有最大行长?

尝试使用StreamReader或类似的C#来读取和写入非常长的行而不使用换行符.

据我了解,在一个称为文件的长字节中,换行仍然只是2个字节(CR + LF).至少那就是我在C/C++中的习惯......

这对于C#和.net是否相同,或者没有换行的行有一些最大长度?

c# line-breaks streamreader textreader

1
推荐指数
1
解决办法
3119
查看次数

从文件中读取数字时,我的代码无法正确地将数字相加

我想将文件中的数字相加。数字是 31 32 45 65 67 54 43 78 98 33 14 25。答案应该是 585,但代码给出了 287。我哪里出错了,如何解决?

using System;
using System.IO;

namespace TaaviSimsonTest
{
    class Program
    {
        static void Main(string[] args)
        {
            using (TextReader reader = File.OpenText("C:\\temp\\andmed.txt"))
            {
                int sum = 0;
                while (reader.ReadLine() != null)
                {
                    int i = int.Parse(reader.ReadLine());
                    sum += i;
                }
                Console.WriteLine(sum);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# parsing sum readline textreader

0
推荐指数
1
解决办法
75
查看次数