标签: text-files

计算文本文件中的行数是否有任何技巧?

假设您有一个文本文件 - 确定该文件中文本行数的最快和/或最有效的内存方式是什么?

是否只是逐个字符地扫描它并寻找换行符?

.net c# windows text text-files

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

在Java中逐行读取文本文件的最快方法

对于日志处理,我的应用程序需要逐行读取文本文件.首先我使用了BufferedReader的readLine()函数,但我在网上读到BufferedReader在读取文件时速度很慢.
之后我尝试将FileInputStream与FileChannel和MappedByteBuffer一起使用,但在这种情况下,没有类似于readLine()的函数,所以我在文本中搜索换行符并处理它:

    try {
        FileInputStream f = new FileInputStream(file);
        FileChannel ch = f.getChannel( );
        MappedByteBuffer mb = ch.map(FileChannel.MapMode.READ_ONLY, 0L, ch.size());
        byte[] bytes = new byte[1024];
        int i = 0;
        while (mb.hasRemaining()) {
            byte get = mb.get();
            if(get == '\n') {
                if(ra.run(new String(bytes)))
                    cnt++;
                for(int j = 0; j<=i; j++)
                    bytes[j] = 0;
                i = 0;
            }
            else
                bytes[i++] = get;
        }
    } catch(Exception ex) {
        ex.printStackTrace();
    }
Run Code Online (Sandbox Code Playgroud)

我知道这可能不是实现它的好方法,但是当我以字节为单位读取文本文件时,它比使用BufferedReader快3倍,但是调用new String(bytes)会创建一个新的String并使程序在使用BufferedReader时更慢.
所以我想问一下逐行读取文本文件的最快方法是什么?有人说BufferedReader是解决这个问题的唯一方法.

PS:ra是dk.brics.Automaton库中RunAutomaton的一个实例.

java file-io readline text-files

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

有没有一种简单的方法来判断文件指针所在的行号?

在Python 2.5中,我正在使用文件指针读取结构化文本数据文件(大小约为30 MB):

fp = open('myfile.txt', 'r')
line = fp.readline()
# ... many other fp.readline() processing steps, which
# are used in different contexts to read the structures
Run Code Online (Sandbox Code Playgroud)

但是,在解析文件时,我点击了一些有趣的东西,我想报告行号,所以我可以在文本编辑器中调查该文件.我可以fp.tell()用来告诉我字节偏移量在哪里(例如16548974L),但没有"fp.tell_line_number()"来帮助我将其转换为行号.

是否有Python内置或扩展可以轻松跟踪并"告诉"文本文件指针所在的行号?

注意:我不是要求使用line_number += 1样式计数器,因为我fp.readline()在不同的上下文中调用,并且该方法需要更多的调试,而不是将计数器插入代码的右角.

python line-numbers text-files

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

在VB6中附加(utf-8编码)编写文本文件

我必须在VB6中编写一个文本文件.我需要附加和utf-8编码.

我尝试了两个解决方案,一个使用"TextStream",另一个使用"ADODB.Stream".

第一个:

    Set fsoFile = fso.OpenTextFile(FileIn(fi), ForAppending, True)
    fsoFile.WriteLine "<tag>kkkjòòkkkkjlòlk</tag>"
    fsoFile.Close
Run Code Online (Sandbox Code Playgroud)

附加效果不错,但我如何编写utf-8编码?

第二个:

Dim ST As ADODB.Stream

Set ST = New ADODB.Stream
ST.Mode = adModeReadWrite
ST.Type = adTypeText
ST.Charset = "UTF-8"

ST.Open
ST.LoadFromFile FileIn(fi)
ST.Position = ST.Size
ST.WriteText "<tag>kkkjòòkkkkjlòlk</tag>"
ST.SaveToFile FileIn(fi)
ST.Close
Run Code Online (Sandbox Code Playgroud)

在utf-8中正确写入,但我不能附加写入文件,但只能使用"adSaveCreateOverWrite".

我怎样才能做到这一点?还有另外一种方法吗?

非常感谢你.

vb6 append utf-8 text-files

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

有没有更好的方法来计算文本文件中的行?

以下是我一直在使用的内容.虽然它确实有效,但我的程序在尝试计算一个相当大的文件时会锁定,例如10,000行或更多行.较小的文件立即运行.

是否有更好的或者我应该说更快的方式来计算文本文件中的行?

这是我目前正在使用的:

    Dim selectedItems = (From i In ListBox1.SelectedItems).ToArray()
    For Each selectedItem In selectedItems
        ListBox2.Items.Add(selectedItem)
        ListBox1.Items.Remove(selectedItem)

        Dim FileQty = selectedItem.ToString
        'reads the data file and returns the qty
        Dim intLines As Integer = 0
        'Dim sr As New IO.StreamReader(OpenFileDialog1.FileName)
        Dim sr As New IO.StreamReader(TextBox1_Path.Text + "\" + FileQty)
        Do While sr.Peek() >= 0
            TextBox1.Text += sr.ReadLine() & ControlChars.CrLf
            intLines += 1
        Loop
        ListBox6.Items.Add(intLines)
    Next
Run Code Online (Sandbox Code Playgroud)

vb.net visual-studio-2010 streamreader text-files

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

PowerShell多字符串替换效率

我试图在一个非常大的文本文件30Mb +中替换600个不同的字符串.我现在正在构建一个执行此操作的脚本; 以下问题:

脚本:

$string = gc $filePath 
$string | % {
    $_ -replace 'something0','somethingelse0' `
       -replace 'something1','somethingelse1' `
       -replace 'something2','somethingelse2' `
       -replace 'something3','somethingelse3' `
       -replace 'something4','somethingelse4' `
       -replace 'something5','somethingelse5' `
       ...
       (600 More Lines...)
       ...
}
$string | ac "C:\log.txt"
Run Code Online (Sandbox Code Playgroud)

但是,由于这将检查每行600次,并且文本文件中有超过150,000多行,这意味着需要大量的处理时间.

有没有比这更有效的更好的替代方案?

干杯,对此有任何建议.

regex powershell perl replace text-files

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

C++从.txt读取浮点值并将它们放入未知大小的2D数组中

在C++中,我想读取一个带有浮点列的文本文件,并将它们放在一个二维数组中.

第一行将是第一列,依此类推.

数组的大小未知,它取决于可能变化的行和列.

我试过"getline","inFile >>",但我所做的所有更改都有一些问题.

例如,有没有办法在值存在后删除不必要的行/行?

文件看起来像这样(+/-):

  • chars"\ t"chars"\ t"chars"\n"
  • float"\ t"float"\ t"float"\ t"float"\n"
  • float"\ t"float"\ t"float"\ t"float"\n"
  • float"\ t"float"\ t"float"\ t"float"\n"

谢谢

直到现在我有这个:

int ReadFromFile(){

ifstream inFile;   
ofstream outFile;

int nLinActual = 0;
const int nCol = 9;
const int nLin = 10;

// open file for reading
inFile.open("values.txt");  
// checks if file opened
if(inFile.fail()) {
    cout << "error loading .txt file reading" << endl; 
    return 1;
}   
// open file for writing
outFile.open ("outArray.txt");  
// checks if file …
Run Code Online (Sandbox Code Playgroud)

c++ arrays root text-files multidimensional-array

8
推荐指数
2
解决办法
9388
查看次数

从大文本文件中读取随机行

我有一个5000多行的文件.我想找到每次运行程序时选择其中一行的最有效方法.我原本打算用随机方法选择一个(之前我知道有5000行).认为可能效率低下,所以我想我会看第一行,然后从顶部删除它并将其附加到底部.但似乎我必须读取整个文件并创建一个要从顶部删除的新文件.

什么是最有效的方法:随机方法或新文件方法?

该程序将每5分钟运行一次,我使用的是c#4.5

c# text-files

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

在文本文件中搜索特定单词并显示其中的行

我在尝试在C#中的文本文件中查找单词时遇到问题.

我想找到输入到控制台则显示,这个词被发现在整个行字控制台.

在我的文本文件中,我有:

斯蒂芬哈伦,12月,9,4055551235

Laura Clausing,January,23,4054447788

威廉康纳,12月,13,123456789

卡拉玛丽,十月,23,1593574862

Audrey Carrit,1月16,1684527548

塞巴斯蒂安贝克,十月,23,9184569876

因此,如果我输入"12月",我希望它显示"Stephen Haren,12月,9,4055551235"和"William Connor,12月,13,123456789".

我想过使用子串,但我认为必须有一个更简单的方法.

给出答案后我的代码:

using System;
using System.IO;
class ReadFriendRecords
{
    public static void Main()
    {
        //the path of the file
        FileStream inFile = new FileStream(@"H:\C#\Chapter.14\FriendInfo.txt", FileMode.Open, FileAccess.Read);
        StreamReader reader = new StreamReader(inFile);
        string record;
        string input;
        Console.Write("Enter Friend's Birth Month >> ");
        input = Console.ReadLine();
        try
        {
            //the program reads the record and displays it on the screen
            record = reader.ReadLine();
            while (record != null) …
Run Code Online (Sandbox Code Playgroud)

c# text-files

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

输出文件中的新行字符

当我尝试将包含多行的字符串写入输出文本文件时,不会保留换行符,并且所有内容都打印在一行中.

具体来说,我有一个按钮,点击一个监听器并关联此功能:

function (e) {
    this.downloadButton.setAttribute("download", "output.txt");
    var textToSend = string1+"\r\n"+string2+"\r\n"+string3;
    this.downloadButton.setAttribute('href', 'data:text/plain;charset=utf-8,' + textToSend);
}
Run Code Online (Sandbox Code Playgroud)

文件正确下载,但string1,string2和string3在同一行.

有什么建议吗?

javascript string newline text-files

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