2010-01-13 48 views
2

即時嘗試創建一個餐廳系統,將創建菜單中的食品等。我如何閱讀java中的記事本文件?

病很快學習jdbc和IM肯定會幫助,但現在我認爲最簡單的方法是創建過我在記事本菜單。

什麼排隊,並從像菜單記事本文件中讀取的最佳途徑。

請嘗試說清楚,我不完全確定所有術語。

這一個看起來很有前途,但我不知道什麼是布萊恩。

////////////////////////////////////////////// ///////////////////////

IM還是堅持了這一點。

我也決定爲閱讀文件做一個單獨的方法。

我試過了我能想到的每個例子。有人可以告訴我一個如何定義文件類路徑的例子。

如果我鍵入menu.txt它只是不工作。

回答

2

最簡單的方法是簡單地使用Apache Commons IO JAR並導入org.apache.commons.io.FileUtils類。使用這門課時有很多可能性,但最明顯的是如下;

List<String> lines = FileUtils.readLines(new File("untitled.txt")); 

就這麼簡單。

「不要重新發明輪子。」

請問你會從這個文件中讀取什麼類型的內容/數據,因爲可能有其他(甚至更簡單)的可能性?

屬性

富= 「欄」

字符串標記

FOO,酒吧,FU,巴茲

讓我知道你是否需要我提到的任何流程的更多細節。

+0

我想在記事本文件中,我也會有一個代碼,每個項目,一個字符串標題和價格。 不能想象id需要比菜單上更多的信息 – OVERTONE 2010-01-13 14:03:43

+0

那麼像「1」,「Foo」,12.34「?每個項目由一個新行分隔? – Alasdair 2010-01-13 14:11:49

+0

不知道在java中foo bar命令意味着什麼,但沒有發現。由一條新線分開聽起來正確的方式,我已經奠定了。或者可能有多少標籤。 – OVERTONE 2010-01-14 13:47:13

1

「記事本」文件只是文本文件,所以你只要有一個Reader實例讀入。由於記事本支持Windows Unicode,因此您可能需要指定一個「UTF-16LE」字符集。

1

的基本想法是,你創建一個文件讀者對象

FileReader fr = new FileReader('file.txt'); 

,然後通過行每行解析和保存的東西一些內部數據存儲(數組,HashMap中)走在文件行。

這個例子中的while循環就是這樣做的。 FileReader課程將負責爲你結束的行,並在沒有更多行要讀取時返回null。在while循環中你需要做的是分析每一行,並將不同的數據位(課程名稱,價格等)彼此分開。

編輯:要解析行,你會做類似下面的事情。 while循環內的內容取決於如何格式化菜單文件。假定菜單文件包含課程價格和課程名稱(按此順序),並在每行上用逗號分隔,則以下方法工作。

12.95$,Penne ala Arabiata 
8.15$,Fish Soup 

請注意,如果您這樣做,您不能在價格中使用逗號。當然,您可以使用分號作爲數據字段之間的分隔符而不是逗號。數據字段的數量當然也取決於您。

String line = ""; 
// read lines from file 
while ((line = fr.readLine()) != null) { 
    // parse each line 
    tokens = line.split(","); 
    String price = tokens[0]; 
    String courseName = tokens[1]; 
    // extract all other information 
} 

在您的最終代碼中,您需要將數據字段保存到某個結構中,而不是從文件中提取它們。另外需要注意的是,由於美元符號,價格是一個字符串不是數字。如果你想用價格進行任何計算,你當然需要將其轉換爲parseFloat()parseDouble()

當然,如果您確實使用csv(逗號分隔值)格式,最好是讓csv庫爲您進行解析,而不是自己編寫解析器。

http://opencsv.sourceforge.net/

+0

uhm,不像是一個noob的聲音,但什麼解析每一行的意思,我將如何做 – OVERTONE 2010-01-13 14:00:11

+1

解析意味着從某物中提取意義。你的java編譯器會解析你的java類。您的文件將包含一個含義,您只需指示計算機如何理解它,例如如何獲得物品,數量和價格,表編號等。 – 2010-01-13 14:09:00

1
String filename = "myfile.txt"; 
BufferedReader reader = new BufferedReader(new FileReader(filename)); 

try{ 
    String line; 
    //as long as there are lines in the file, print them 
    while((line = reader.readLine()) != null){ 
    System.out.println(line); 
    } 
} catch (IOException e) { 
    e.printStackTrace(); 
}