2017-01-10 62 views
0

我有一個看起來像這樣的文件:如何搜索名稱的文件和提取價值

Dwarf remains:0 
Toolkit:1 
Cannonball:2 
Nulodion's notes:3 
Ammo mould:4 
Instruction manual:5 
Cannon base:6 
Cannon base noted:7 
Cannon stand:8 
Cannon stand noted:9 
Cannon barrels:10 
... 

什麼是打開這個文件,搜索名稱,並返回該字段的值,最簡單的方法是什麼?我不能使用任何外部庫。

我曾試過/這可以嗎?

public String item(String name) throws IOException{ 
    String line; 
    FileReader in = new FileReader("C:/test.txt"); 
    BufferedReader br = new BufferedReader(in); 


    while ((line = br.readLine()) != null) { 
     if(line.contains(name)){ 
      String[] parts = line.split(":"); 
      return parts[1]; 
     } 
    } 

    return null; 



} 
+0

你到目前爲止嘗試了什麼?任何努力? –

+0

打開文件,逐行閱讀,使用正則表達式檢查名稱,如果找到合適的行關閉文件(如果需要)並返回值。要查看的類:'File','FileReader','BufferedReader'(用於簡單的行讀取),'String'(或者'Pattern'和'Matcher')等。 – Thomas

+0

只需閱讀內容並找到您想要......如果你發佈你已經嘗試過的代碼或者你遇到的錯誤,那將會很棒。 – Mohit

回答

0

作爲你的代碼的後續 - 它編譯和工作正常。但請注意,/不是Windows上的正確路徑分隔符(\是)。您可以使用以下方式創建正確的路徑:例如:Paths.get("C:", "test.txt").toString()。在File.separator中也定義了正確的分隔符。

0

使用基本的Java功能可以輕鬆實現該任務。首先,你需要打開文件並讀取它的行。這可以通過Files.lines (Path.get ("path/to/file"))輕鬆實現。其次,你需要遍歷這些指令返回的所有行。如果您不知道流API,則可以使用String[] lines = Files.lines(Paths.get("path/to/file")).toArray(a -> new String[a]);將從Files.lines (...)返回的值從Stream更改爲數組。現在lines變量具有輸入文件中的所有行。

然後,您必須將每條線分成兩部分(String.split)並查看第一部分是否等於(String.equals)您要查找的內容。然後簡單地返回第二個。