给定一个文本文件,我将如何读取文件中的任意行?
说,我有一个文件test.txt.我如何阅读文件中的第15行?
我所看到的是涉及将整个文本文件存储为String数组然后使用行号的值作为要从数组中使用的String的数量的东西......但是有一些复杂情况:文本文件是巨大的,我正在编写的应用程序的机器并不是一个顶尖的系统.速度不是首要任务,但绝对是一个主要问题.
有没有办法只读取文本文件的特定行并将结果存储为字符串?
感谢您的回复:该文件是KINDA结构化的.它有25行信息,然后X号线,但第25行17具有的价值X.
但是,有一个空白行,它作为文件中的第二条记录重复自身,X可以为每条记录赋予不同的值.
我想要做的是读取并存储前25行作为独立值,然后将下一个X(通常约250)行存储为数组.然后我将它存储在SQL数据库中并重复使用NEXT记录,直到我到达第Y条记录(文件中的记录数在第3行)
编辑2:好吧,我想我已经找到了基于你所有人的回应的解决方案.
我将读取前25行并将其存储为数组.我将数组的相关内容复制到局部变量然后我将删除前25行.然后,我可以使用info将下一个X行(数组中的第13项的值)存储为数组,将其序列化,将其存储在数据库中,然后删除我刚刚读取的行.
然后,我可以为每个后续记录重复该过程.
当然,这取决于我正在做的一个假设,说实话,我不确定是否属实.是否有可能从C#中删除文本文件中的前n行而不必读取整个内容并在没有前n行的情况下重写它?
我正在尝试在我的Swift项目中使用第三方Objective-C库.我已经成功地将库导入到Xcode中,并且我创建了一个<Project>-Bridging-Header.h文件,允许我在Swift中使用我的Objective-C类.
然而,我似乎遇到了一个问题:Objective-C代码包含一个Constants.h带宏的文件#define AD_SIZE CGSizeMake(320, 50).导入Constants.h到我的内容<Project>-Bridging-Header.h不会导致AD_SIZE我的Swift应用程序可以使用的全局常量.
我做了一些研究,发现Apple Complex文档中的Apple文档说明了这一点
"在Swift中,您可以使用函数和泛型来实现与复杂宏相同的结果,而不会有任何妥协.因此,C和Objective-C源文件中的复杂宏不能用于Swift代码."
阅读完之后,我通过let AD_SIZE = CGSizeMake(320, 50)在Swift中指定它可以正常工作,但是如果这些值在我不知情的情况下发生变化,我希望保持与库的未来兼容性.
在Swift或我的桥接头中是否有一个简单的解决方案?如果没有,有没有办法替换#define AD_SIZE CGSizeMake(320, 50)in Constants.h并使事物向后兼容任何使用旧AD_SIZE宏的现有Objective-C应用程序?
如果我有一个变量多套(我们称之为数Ñ),其中最多有米元件分别,什么是计算成对交叉将所有对套最有效的方法是什么?请注意,这与所有n个集合的交集不同.
例如,如果我有以下几组:
A={"a","b","c"}
B={"c","d","e"}
C={"a","c","e"}
Run Code Online (Sandbox Code Playgroud)
我希望能够找到:
intersect_AB={"c"}
intersect_BC={"c", "e"}
intersect_AC={"a", "c"}
Run Code Online (Sandbox Code Playgroud)
另一种可接受的格式(如果它使事情变得更容易)将是给定集合中的项目映射到包含相同项目的集合.例如:
intersections_C={"a": {"A", "C"},
"c": {"A", "B", "C"}
"e": {"B", "C"}}
Run Code Online (Sandbox Code Playgroud)
我知道,这样做的一个方法是创建一个字典映射中的所有工会的每个值ñ套在它出现的集列表,然后通过所有这些值来创建列表如重复intersections_C以上,但我不确定n的增加是如何增加的,并且该组的大小变得太大.
一些额外的背景信息:
基本上,我有一个相当大的列表(一年的数据),单个离散事件发生的次数(对于我当前的项目,有人打印的东西的列表).基于此列表,我想构建某种统计模型,该模型将预测下一个事件(下一个打印作业)的最可能时间,给出所有之前的事件时间.
我已经读过这篇文章,但是对于我的项目而言,回复并没有完全帮助我.我做了一些额外的研究,发现隐马尔可夫模型可能允许我准确地这样做,但我找不到如何仅使用一个列表生成隐马尔可夫模型的链接.我还发现在列表中使用卡尔曼滤波器可能很有用,但基本上,我想从实际使用它们的人那里获得更多关于它的信息,并在尝试某些事情并希望它起作用之前了解它们的局限性和要求.
谢谢你!
编辑:所以通过Amit在评论中的建议,我也将其发布到Statistics StackExchange,CrossValidated.如果您确实知道我应该做什么,请在这里或那里张贴
对于我正在做的项目,我必须做的一件事是删除明文文件的前X行.我说的是X因为我需要多次执行此例程,每次删除的行都不同,但是它们总是从头开始,删除第一个X然后将结果输出到同一个文件.
我正在考虑做这样的事情,我从其他教程和例子拼凑起来,我读到:
String line = null;
String tempFile = Path.GetTempFileName();
String filePath = openFileDialog.FileName;
int line_number = 0;
int lines_to_delete = 25;
using (StreamReader reader = new StreamReader(originalFile)) {
using (StreamWriter writer = new StreamWriter(tempFile)) {
while ((line = reader.ReadLine()) != null) {
line_number++;
if (line_number <= lines_to_delete)
continue;
writer.WriteLine(line);
}
}
}
if (File.Exists(tempFile)) {
File.Delete(originalFile);
File.Move(tempFile, originalFile);
}
Run Code Online (Sandbox Code Playgroud)
但是我不知道这是否会起作用,因为从第0行开始的行号或其他东西......还有,我不知道它在效率和形式方面是否是好的代码.
谢谢一堆.
我正在研究一个实验室项目的应用程序,我正在用C#编写它.它应该从我们用来运行测试的应用程序导出的文本文件中导入结果,到目前为止,我遇到了障碍.
我已经得到程序来保存大约250个十进制值作为一维数组,但后来我试图让数组本身能够保存在SQL数据库中,以便我以后可以检索数组并使用小数用于构建点的图的值.
我需要将整个数组作为单个值导入到数据库中,因为实验室项目有几个样本,每个样本都有自己的250个左右的小数点(也将作为数组存储)
谢谢你的帮助.
编辑:感谢您的快速回复,伙计们但问题是它不仅仅来自只有1次测试的样本.每个样本本身都进行相同的测试,不同的分贝水平超过15次.每个测试都有自己的250个结果,我们有很多标本.
此外,样本已经分配了一个唯一的ID,它将被存储为String而不是Int.我正在计划做的是在每个样本的DB中有一个单独的表,并且每行包含测试的分贝级别的信息并存储序列化的数组...
我认为这样可行,因为我们不需要直接从数据库中访问数据中的各个点; 我只是使用数据库来存储数据内存,因为它有很多.我将查询数据库中的数组和其他信息,然后使用zedgraph绘制数组中的点并同时比较多个样本.