Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java如何逐行读取文本文件并分别获取该行的文本(长度文本)_Java - Fatal编程技术网

Java如何逐行读取文本文件并分别获取该行的文本(长度文本)

Java如何逐行读取文本文件并分别获取该行的文本(长度文本),java,Java,我有这样的文本文件 12A aa65 3244 5 665 fr 65 3434344344343 888dds 77786334 6h 1114 22 6FF 7 d M6 h o8 665466676 8Pt 543NNv 9 该文件位于不同宽度的列中,例如,第一列宽6个字符,第二列宽5个字符,第三列宽5个字符,依此类推 我想将每一行拆分为列中的值,如第一行所示:

我有这样的文本文件

12A aa65 3244 5 665 fr 65 3434344344343 888dds 77786334 6h 1114 22 6FF 7 d M6 h o8 665466676 8Pt 543NNv 9 该文件位于不同宽度的列中,例如,第一列宽6个字符,第二列宽5个字符,第三列宽5个字符,依此类推

我想将每一行拆分为列中的值,如第一行所示:

12A , aa65 , 3244 , 5 , , 665 , fr , 65 , 3434344344343 , 888dds , 77786334 , 6h 最新答复:

啊,好的,你想把文本按列的宽度分开。看起来您的列长度是:

6 5 5 6 8 6 4 18 9 (the rest)

您也可以考虑使用一个类而不是一个数组来处理部分,并将解析逻辑放在类中。

原始答复:

听起来您正在寻找和的组合:

readLine从输入中读取行


split使用正则表达式定义的分隔符将字符串拆分为字符串数组。在您的情况下,分隔符似乎只是一个或多个空格。

您可以使用readline,然后按空格拆分。

您希望像这样拆分字符串

我假设您已经阅读了该文件,只想将其拆分


如果需要,请对行使用Str.split\n,对空格使用Str.split。 这将从源读取输入,直到遇到换行符为止

对于文件读取,我通常使用BufferedReader作为文件读取器的包装器,因为这对于批量读取更有效。FileReader为每次对read方法的调用读取文件

编辑以添加: 如果您希望对结果进行排序,那么将数据完全读入内存,然后再进行排序将更加高效,因为随机磁盘访问非常慢


使用自定义比较器将行读入列表或优先级队列将实现您的目标。

使用扫描仪读取文件,并使用subStringstart、end方法解析每个字段

Scanner sc = new Scanner(new File("myFile"));
while (sc.hasNextLine()) {
   String aLine = sc.nextLine();
   String field1 = aLine.subString(0,6);
   String field2 = aLine.subString(6,11);
   ...
}

很不清楚你在问什么。你如何划分界线的标准是什么?目前你的问题很模糊,无法回答。你说的6码和5码是什么意思。你能再描述一下标准吗?是的。这是读线。但我想按长度获取该行的文本因为split需要一个正则表达式,他有可变的空格,他不能用+?@LakmalUdayanga:长度是什么意思?@Kon:谢谢,出于某种原因,我想split会合并空段,但是当然不会。@LakmalUdayanga:除非你告诉我们你所说的长度是什么意思,否则帮不了你。同样,说我不能使用X也是毫无意义的。你必须说为什么。是的,你是对的。我找到了我的食物:D谢谢:D
BufferedReader r = /*...get a BufferedReader for your input...*/;
String line;
String[] parts;

while ((line = r.readLine()) != null) {
    parts = line.split(" +");
    // Use the `parts` array
}
Scanner sc = new Scanner(new File("myFile"));
while (sc.hasNextLine()) {
   String aLine = sc.nextLine();
   String field1 = aLine.subString(0,6);
   String field2 = aLine.subString(6,11);
   ...
}