2012-06-10 100 views
0

我想有某種包含文本文件的,有點像這樣:在文本文件中查找數據?

John.file: 
Name= John 
Age = 333 

而在我的計劃,我想以某種方式讓一個人有這個數據,有點像:

Person p = new Person(John.file); 

找到文件中的數據有什麼好的選擇,以便我可以像「333」一樣添加Person p的年齡變量?我正在考慮嘗試正則表達式API,除非有其他選擇!

+0

當你將'John.file'作爲參數傳遞給'Person'的構造函數時,是什麼'John.file'?一個字符串或其他東西?即Person的構造函數需要什麼類型的參數? – WickeD

+0

最簡單的方法就是你要走的路。將信息存儲在「文件」中,並檢索屬性並將其分配給相應的變量。請注意 - 如果你想讓事情變得更簡單,只需將重要的東西存儲在'file'中,比如'John,'333'等等。避免'Name ='。這是因爲如果你想讓你的方式變得非常簡單,'file'完全沒有任何用處,只是與你的Java程序相關。 –

回答

4

您可以使用作爲JDK一部分的屬性文件功能來完成您要執行的操作。有關更多信息,請參閱the documentation

Properties properties = new Properties(); 
try { 
    properties.load(new FileInputStream("/my/path/John.properties")); 
} catch (IOException e) { 
    ... 
} 
System.out.println(properties.getProperty("Name")); // Prints John 

爲了完整,這裏是/my/path/John.properties的內容。

Name=John 
Age=333 
+0

'//打印John'或者可能'null'如果catch被調用。 ;)這是真的,如果它是緊跟在'properties.load之後的代碼語句(..' –

+0

@AndrewThompson Point採取!只是爲了演示與極端簡單的例子。:) – cheeken

2

絕對使用XML。您可以使用JAXB將XML反序列化爲Java類。對於像你所描述的那樣簡單的課程來說,這將是一件微不足道的事情。該XML看起來是這樣的:

<Person> 
<Name>John</Name> 
<Age>333</Age> 
</Person> 
+1

我很抱歉,但我認爲你是不必要的複雜的OP的事情! – WickeD

+1

@WickeD沒有什麼複雜的。從長遠來看,它會讓事情變得更容易。 – Hassan

+0

我只是說,從我從OP的問題中可以得出的結論他是Java的新手,可能會感到困惑! – WickeD