2017-02-16 102 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來處理您將要使用掃描儀讀取的內容不起作用。