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

时间:2015-03-09 20:22:21

标签: java file-io

我有一个汇编语言写成MOV R1,1的文件,现在我要做的就是我必须阅读它,例如

首先它应该扫描MOV,

然后R1

然后1。“

但是当我使用input.next()时,它会像

一样进行扫描

乐章

然后是R1,1

我该怎么办?

3 个答案:

答案 0 :(得分: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

然后你想要用逗号分割你的标记:

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

然后你很高兴,因为你的标记用逗号分隔,如你所愿:

MOV
R1
1

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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();
}