簡體   English   中英

使用Java在文件中查找令牌

[英]Finding token in file using java

我正在嘗試讀取文本文件。 我必須找到一個特定的令牌“學生|項目|” 在那個文件中。 然后我必須丟棄該文件中的下8行,並讀取第9行以獲取所需的輸入。 現在我有些困惑。 使用哪個讀取文件? 掃描器類還是緩沖區讀取器? 哪個在性能問題上更好? 我也看到使用數據流和輸入流。 所以我有點困惑。 那用什么來尋找代幣呢? 正則表達式解析還是令牌解析? 在解析這樣的行時,我將使用split()拆分行還是為此使用nextToken():“ ID |名稱|值|” 獲取ID名稱和值。 請幫忙。

使用包裹在InputStreamReader (用於正確編碼),包裹在BufferedReader (用於方便的方法,例如readLine() )的FileInputStream ,然后String.contains()可以檢查String是否包含另一個String

使用FileUtils.readLines(File f)獲取文件中要迭代的行的列表。 然后,只需使用line.contains("STUDENT | ITEMS |")來檢測您的匹配項。 跳過循環中的后8行。 (來自commons-io的FileUtils)

您似乎對Java的數據輸入沒有經驗,也許最好對此稍作解釋

FileInputStream從文件讀取到數據流中。 為文件名創建一個文件時,它將為您打開文件。

DataStreamReader將讀取FileInputStream並處理編碼,處理輸入端並在讀取時為您提供字符。

BufferedReader幫助提高效率和便利性。 與其逐字節讀取(開銷很大),不如處理塊讀取並將每個塊存儲在其緩沖區中。 這對您是不可見的,但會有助於提高性能。 它還為您提供了逐行閱讀的功能,這將對您的任務有很大幫助。

這就是為什么將文件包裝在不同層次的閱讀器中的原因。 我建議您看一下如何使用ArrayLists(java.util),因為它們是自動調整大小的數組,可以讓您輕松地逐行存儲行(作為Strings)。 未來的良好做法,並且易於使用。

就找到令牌而言,您已經閱讀了所有行(逐行或已存儲)。 您可以使用String.contains來檢查字符串是否具有令牌,或者可以使用indexOf在字符串中查找特定位置。 無論哪種方式,從那一點開始,只是跳過正確的行數,然后將第9行發送到所需的功能

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM