I/O java 中的文件读取问题

I/O file reading issue in java

我有一个用汇编语言编写的文件 MOV R1,1,现在我要做的是我必须像

一样阅读它

首先它应该扫描 MOV,

然后R1

然后 1.`

但是当我使用 input.next() 时,它扫描得像

移动

然后是 R1,1

我该怎么办?

您可以使用 *String.split()* 方法来 拆分带有逗号的标记:

String[] ar=str.split(",");

之后,得到两个值。

string part1 = ar[0];
double part2 = ar[1];

在这种情况下 R1 将存储在 part1

这是一个适合您的工作示例:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Arrays;
import java.util.ArrayList;
import java.util.List;

public class BufferedReaderExample {

    public static void main(String[] args) {

try (BufferedReader br = new BufferedReader(new FileReader("testing.txt")))
        {

            String sCurrentLine;

            while ((sCurrentLine = br.readLine()) != null) {
                System.out.println(sCurrentLine);
                String[] parts = sCurrentLine.split(" ");
                System.out.println(Arrays.toString(parts));
                List<String> splitNames = new ArrayList<>();
                for (String name : parts) {
                splitNames.addAll(Arrays.asList(name.split(",")));
            }
                for (String splitName : splitNames) {
                     System.out.println(splitName);
               }
         }
        } catch (IOException e) {
            e.printStackTrace();
        } 

    }
}

testing.txt 包含:

MOV R1,1

输出:

MOV R1,1
[MOV, R1,1]
MOV
R1
1

如您所见,代码的作用是:对于每一行,用空格分隔各个部分

String[] parts = sCurrentLine.split(" ");

(这会让你 MOVR1,1

那你要用逗号分割得到的token:

splitNames.addAll(Arrays.asList(name.split(",")));

那你就可以开始了,因为你的标记用逗号等分隔,如你所愿:

MOV
R1
1

大多数流中的默认分隔符是 "space"。虽然有些允许您通过 useDelimiter(...) 方法更改它们。查看您的特定流的 JavaDoc。

使用 Java8 和流的解决方案:

try (BufferedReader bufferedReader = new BufferedReader(new FileReader("f.txt"))) {
    List<String> words = bufferedReader.lines()
            .map(line -> line.split("[\s,]"))
            .flatMap(Arrays::stream)
            .collect(Collectors.toList());
} catch (IOException e) {
    e.printStackTrace();
}