2015-10-28 67 views
0

假設我想將輸入文本文件讀入列表。Java讀取arraylist中的特定文件存儲

文件內容:

/* ignore comments */ 
/*TaskID <space> Duration <space> Dependency <comma> <Dependency>...*/ 

A 1 
B 2 A(-1) 
C 3 B,A 
D 4 D 

如何避免閱讀的評論和每行存儲在一個正確的順序?

例:

task = {A,B,C,D} 

duration = {1,2,3,4} 

dependency = {, A(-1), BA, D} 
+0

純代碼編寫請求是題外話堆棧溢出處理enter人物 - 我們預計 問題這裏涉及*特定*編程問題 - 但我們 會很高興幫助你自己寫!告訴我們 [你試過的東西](http://whathaveyoutried.com),以及你卡在哪裏。 這也將幫助我們更好地回答你的問題。 –

回答

0

從列表中選擇該特定文件。逐行閱讀。檢查每一行是否爲註釋。如果是,請跳過該行並繼續。否則將行分割成單詞並將這些單詞存儲到String數組中。將每個元素放到相應的列表中。 注:的conditon if (raw.length < 3)只是作爲你有一個在一行的末尾4

public class ReadContents { 

    public static void main(String[] args) { 
     ArrayList<File> files = new ArrayList(); 

     ArrayList<String> tasks = new ArrayList(); 
     ArrayList<String> hrs = new ArrayList(); 
     ArrayList<String> others = new ArrayList(); 
     String[] raw; 
     files.add(new File("File path")); 
     try (BufferedReader br = new BufferedReader(new FileReader(files.get(0)))) { 
      String line; 
      while ((line = br.readLine()) != null) { 
       if (line.startsWith("/*") | line.equals("")) { 
        continue; 
       } else { 
        raw = line.split("\\s+"); 
        if (raw.length < 3) { 
         tasks.add(raw[0]); 
         hrs.add(raw[1]); 
         others.add(""); 
        }else{ 
         tasks.add(raw[0]); 
         hrs.add(raw[1]); 
         others.add(raw[2]); 
        } 
       } 
      } 
     } catch (Exception ex) { 
      System.out.println(ex.getMessage()); 
     } 
    } 
} 
0

如何避免閱讀的評論和每行存儲在一個正確的順序?

避免評論最簡單的方法是使用簡單的方法來表示評論。例如。以#開頭的行通常用於表示簡單腳本語言中的註釋。因此,不需要解析開放/關閉評論上下文,因爲輸入可以被視爲整條線。

相關問題