从文件中只读取一个标记

时间:2017-02-16 21:16:46

标签: java

感谢大家的帮助。 我需要做的是:

**打开一个文件进行阅读**

**读取文件**

中的第一个标记[String]

**报告下一个Read_Cursor_Position **

**返回令牌**

**关闭文件**

**重新打开文件**

**从文件**

中读取* second *标记

依此类推,直到读完所有必要的数据。 我是Java的新手,但在C ++中,tellg或tellp用于提取光标位置和getline,只读取文件中的一个标记。 我希望这个解释能更好地解释我的问题。

在编写了一个将带分隔符的数据输出到UTF文件的方法之后,我现在正尝试从UTF文件中提取数据。数据必须被提取的方式是当时的一个令牌,如前所述,令牌具有分隔符,所有Java必须做的就是读取文件的令牌,直到找到分隔符。 以下是writer方法的代码:

public void writeData(String data) throws IOException {
    try {
        dout.writeUTF(data);
        dout.writeBytes("^");
    } catch(IOException e) {
        throw e;
    }
}

以下是读者:

public void readData() throws IllegalStateException {
    try {
        apstr = new StringBuilder();
        while(scan.hasNext()) {
            apstr.delete(0,apstr.length());
            apstr.append(scan.next());
            System.out.println("The token is: " + apstr);
        }
    } catch(IllegalStateException e) {
        scan.close();
        throw e;
    }
    scan.close();
}

该文件包含以下数据: Java的^ C ++ PHP ^ ^ 输出是: Java的^ C ++ PHP ^ ^ 但我想读的只是Java

这个词

如何让Java做同样的事情?

顺便问一下,我该如何发布新问题?此网页上没有按钮显示"发布新问题"。提前谢谢。

2 个答案:

答案 0 :(得分:0)

您应该使用Writer写入您的文件。如果你想使用utf-8编码做类似的事情

PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream(“somepath”),StandardCharsets.UTF_8)));

然后做

pw.println(“some text”);

使用DataOutputStream处理您将使用扫描仪阅读的内容无法正常工作。

答案 1 :(得分:-1)

使用StringTokenizer

它包含一个构造函数StringTokenizer(String str, String delim) - 其中分隔符将是克拉(" ^")字符,而nextToken()函数则将下一个标记返回为字符串。

此外,此StackOverflow post演示了将文件读入String的各种选项。