2017-02-16 192 views
0

感谢大家的帮助。 我需要做的是以下几点:从文件中读取一个令牌

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

**阅读第一令牌[字符串]在文件中**

**报表的下一个Read_Cursor_Position **

**返回令牌**

**关闭文件**

**打开文件**

**从文件**

等中读取第二个*标记等,直到读取了所有必需的数据为止。 我是Java新手,但在C++中,tellg或tellp用于提取光标位置和getline,以便从文件中读取一个标记。 我希望这个解释能更好地解释我的问题。

在编写一个将数据以分隔符输出到UTF文件的方法后,我现在试图从UTF文件中提取数据。数据必须被提取的方式是当时的一个令牌,正如我之前所说的,令牌有一个分隔符,所有Java所要做的就是读取文件的标记,直到找到分隔符为止。 下面是笔者方法的代码:

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

所以扫描仪正在从文件中读取?然后你不想使用writeUTF。 writeUTF不会按照您认为的方式进行编码。使用一个作家,并指定UTF-8编码 – MeBigFatGuy

+1

顺便说一句,你_无法可能发布你的确切代码。该印刷线与您所称的输出不符。 :) – Keith

回答

-1

使用StringTokenizer

它包含一个构造函数StringTokenizer(String str, String delim) - 其中您的分隔符将是克拉(“^”)字符,并且函数返回下一个标记为String。

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

+0

'StringTokenizer'是遗留类,要标记字符串,你应该使用String#split();' – matoni

+0

谢谢大家的帮助。 – Amno

0

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

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

然后做

pw。println(“一些文本”);

使用DataOutputStream来处理您将要使用扫描仪读取的内容不起作用。