感谢大家的帮助。 我需要做的是:
**打开一个文件进行阅读**
**读取文件**
中的第一个标记[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做同样的事情?
顺便问一下,我该如何发布新问题?此网页上没有按钮显示"发布新问题"。提前谢谢。答案 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(String str, String delim)
- 其中分隔符将是克拉(" ^")字符,而nextToken()
函数则将下一个标记返回为字符串。
此外,此StackOverflow post演示了将文件读入String
的各种选项。