小编ser*_*ave的帖子

StreamReader.Readline()真的是计算文件中行数的最快方法吗?

在环顾四周的时候,我发现了很多关于如何计算出文件中行数的讨论.

例如这三个:
c#我 如何计算
文本文件中的行数确定文本文件中的行数
如何快速计算行数?

那么,我继续前进并最终使用了我能找到的最有效(至少是内存方式?)方法:

private static int countFileLines(string filePath)
{
    using (StreamReader r = new StreamReader(filePath))
    {
        int i = 0;
        while (r.ReadLine() != null) 
        { 
            i++; 
        }
        return i;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,当文件中的行本身非常长时,这将永远存在.真的没有更快的解决方案吗?

我一直试图使用StreamReader.Read()或者StreamReader.Peek()我不能(或者不知道如何)让它们中的任何一个一旦有'东西'(字符?文本?)就移动到下一行.

有什么想法吗?


结论/结果(根据提供的答案进行一些测试后):

我在两个不同的文件中测试了下面的5种方法,我得到了一致的结果,似乎表明普通的旧StreamReader.ReadLine()方法仍然是最快的方法之一......说实话,我对答案中的所有评论和讨论感到困惑.

文件#1:
大小:3,631 KB
行:56,870

文件#1的结果以秒为单位:
0.02 - > ReadLine方法.
0.04 - >读取方法.
0.29 - > ReadByte方法.
0.25 - > Readlines.Count方法.
0.04 - > ReadWithBufferSize方法.

文件#2:
大小
:14,499 KB 行:213,424

文件#1的结果以秒为单位:
0.08 - > …

c# lines readline streamreader peek

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

不使用System.IO.FileInfo获取文件大小?

是否可以在不使用C#的情况下获取文件的大小System.IO.FileInfo

我知道你可以分别使用Path.GetFileName(yourFilePath)和得到其他东西,比如Name和Extension Path.GetExtension(yourFilePath),但显然不是文件大小?有没有其他方法我可以获得文件大小而不使用System.IO.FileInfo

唯一的原因是,如果我是正确的,FileInfo会抓取比我真正需要的更多的信息,因此如果我需要的唯一东西是文件的大小,那么收集所有这些FileInfo需要更长的时间.有更快的方法吗?

c# filesize fileinfo filepath

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

循环使用Excel工作表并使用C#将文本保存到TXT文件中

我解决了大部分问题.我可以遍历工作表,我可以创建文本文件并写入它.我遇到的唯一问题实际上是从每张表中提取文本或值.下面是我的代码,但它只会为每个工作表抛出一个对象,并将这些单词写入我的文本文件而不是实际值.

System.Object[,]
System.Object[,]
Run Code Online (Sandbox Code Playgroud)

我还缺少什么?我应该指出我是一名初学程序员.

这是我到目前为止的代码:

using (StreamWriter sw = File.CreateText("ExtractedText.txt"))
{
    Excel.Application xlApp = new Excel.Application();
    Excel.Workbook thisWkBook = xlApp.Workbooks.Open(thisFile);

    foreach (Excel.Worksheet sheet in thisWkBook.Worksheets)
    {
        sw.WriteLine(sheet.UsedRange.Value);
    }
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?谢谢!

c# excel worksheet export-to-text

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

T-SQL:将NTEXT转换为VARCHAR到INT/BIGINT

我有一个表格,其中包含NTEXT类型的字段,它存储了许多类型的值,其中包含文件大小.我正在尝试在记录列表上运行查询并添加文件大小,但我遇到了这个令人困惑的问题.

由于NTEXT不能直接/隐式转换为INTBIGINT,我首先将其转换为VARCHAR然后我尝试将其转换为INT或BIGINT.一切顺利,直到我尝试将VARCHAR值转换为INTBIGINT.

以下是我的查询和结果:

首先,我尝试以下操作,显示没有问题,输出为61069(值仍为ntext类型).

SELECT FileSize
FROM dbo.myTable
WHERE ID = 111
Run Code Online (Sandbox Code Playgroud)

现在我将其转换/转换为varchar,再次,没问题.输出是61069(现在是varchar类型).

SELECT CONVERT(VARCHAR, FileSize)
FROM dbo.myTable
WHERE ID = 111
Run Code Online (Sandbox Code Playgroud)

最后,我尝试将VARCHAR值转换为BIGINT,以便我可以执行我的SUM()和其他计算,但这次我得到一个" 将数据类型varchar转换为bigint错误. "消息.

SELECT CONVERT(BIGINT, CONVERT(VARCHAR, FileSize))
FROM dbo.myTable
WHERE ID = 111
Run Code Online (Sandbox Code Playgroud)

如果我尝试将其转换为INT,我会收到" 转换varchar值'7/1/2008 3:39:30 AM'转换为数据类型int "

SELECT CONVERT(INT, CONVERT(VARCHAR, FileSize))
FROM dbo.myTable
WHERE ID = 111
Run Code Online (Sandbox Code Playgroud)

我完全迷失了,任何可能导致这种情况的想法?

t-sql sql-server varchar ntext bigint

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