2014-12-04 67 views
0

我這裏有:JAVA:在文件中搜索字符串/關鍵字,並添加包含搜索字符串/關鍵字在一個ArrayList行

String Path = "C:\\Ian\\sample\\install.info" 
List<String> BatchList = new ArrayList<String>(); 
List<String> installList = new ArrayList<String>(); 
List<String> uninstallList = new ArrayList<String>(); 
Scanner scanner = new Scanner(Path); 
String myLine; 
int i = 0; 
while((myLine = scanner.next()) != null) 
{ 
if(myLine.indexOf("C:\\Batch") == 0) 
{ 
    BatchList.add(myLine); 
} 
if(myLine.indexOf("C:\\install") == 0) 
{ 
    installList.add(myLine); 
} 
if(myLine.indexOf("C:\\uninstall") == 0) 
{ 
    uninstallList.add(myLine); 
} 
i++; 
} 

這裏是install.info

[BatchFiles] 
C:\Batch\Batch1.jar 
C:\Batch\Batch2.jar 
C:\Batch\Batch3.jar 
C:\Batch\Batch4.jar 

[INSTALL] 
C:\install\sql1.sql 
C:\install\sql2.sql 
C:\install\sql3.sql 
C:\install\sql4.sql 

[UNINSTALL] 
C:\uninstall\sql1.sql 
C:\uninstall\sql2.sql 
C:\uninstall\sql3.sql 
C:\uninstall\sql4.sql 
內容

是否有任何想法或任何方式讓我得到由我的關鍵字組成的行,並將其放入ArrayLists中?

所需的輸出

BatchList應包括:

C:\install\Batch1.jar 
C:\install\Batch2.jar 
C:\install\Batch3.jar 
C:\install\Batch4.jar 

installList應包括:

C:\install\sql1.sql 
C:\install\sql2.sql 
C:\install\sql3.sql 
C:\install\sql4.sql 

聯合國installList應該包括::

C:\uninstall\sql1.sql 
C:\uninstall\sql2.sql 
C:\uninstall\sql3.sql 
C:\uninstall\sql4.sql 

= - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = -

UPDATE

List<String> batchList = new ArrayList<String>(); 
    List<String> installList = new ArrayList<String>(); 
    List<String> uninstallList = new ArrayList<String>(); 

    Scanner scanner = new Scanner(Path); 
    String myLine; 
    int i = 0; 
    while (scanner != null && scanner.hasNext()) { 
     if ((myLine = scanner.next()) != null) { 
      if (myLine.indexOf("C:\\Batch") == 0) { 
      batchList.add(myLine); 
     } 
     if (myLine.indexOf("C:\\install") == 0) { 
      installList.add(myLine); 
     } 
     if (myLine.indexOf("C:\\uninstall") == 0) { 
      uninstallList.add(myLine); 
     } 
     i++; 
    } 
} 
if (scanner != null) { 
    scanner.close(); // Closing scanner 
} 

String[] BatchPath = batchList.toArray(new String[0]); 
String[] SQLinsPath = installList.toArray(new String[0]); 
String[] SQLuninsPath = uninstallList.toArray(new String[0]); 

for (String k : BatchPath) 
{ 
    System.out.println(k); 
} 
for (String k : SQLinsPath) 
{ 
    System.out.println(k); 
} 
for (String k : SQLuninsPath) 
{ 
    System.out.println(k); 
} 
+0

而且還告訴我們,你得到什麼輸出。你有沒有嘗試調試你的代碼? – 2014-12-04 04:44:49

+0

是的,這說明不了什麼 – 2014-12-04 05:21:27

回答

0

下面的代碼會爲你工作。

import java.io.File; 

public static void main(String[] args) { 
    String path = "C:\\Ian\\sample\\install.info"; // Changed variable name from Path to path 
    File file = new File(path);     // Creating file object 
    List<String> batchList = new ArrayList<String>(); // Changed variable name from BatchList to batchList 
    List<String> installList = new ArrayList<String>(); 
    List<String> uninstallList = new ArrayList<String>(); 
    Scanner scanner = null; 
    try { 
     scanner = new Scanner(file);    // Reading file object 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } 
    String myLine; 
    int i = 0; 
    while (scanner != null && scanner.hasNext()) { 
     if ((myLine = scanner.next()) != null) { 
      if (myLine.indexOf("C:\\Batch") == 0) { 
       batchList.add(myLine); 
      } 
      if (myLine.indexOf("C:\\install") == 0) { 
       installList.add(myLine); 
      } 
      if (myLine.indexOf("C:\\uninstall") == 0) { 
       uninstallList.add(myLine); 
      } 
      i++; 
     } 
    } 
    if (scanner != null) { 
     scanner.close(); // Closing scanner 
    } 
    // System.out.println(batchList); 
    // System.out.println(installList); 
    // System.out.println(uninstallList); 

    String[] BatchPath = batchList.toArray(new String[0]); 
    String[] SQLinsPath = installList.toArray(new String[0]); 
    String[] SQLuninsPath = uninstallList.toArray(new String[0]); 

    System.out.println("Batch List : "); 
    for (String k : BatchPath) { 
     System.out.println(k); 
    } 
    System.out.println(); 

    System.out.println("Install List : "); 
    for (String k : SQLinsPath) { 
     System.out.println(k); 
    } 
    System.out.println(); 

    System.out.println("Uninstall List : "); 
    for (String k : SQLuninsPath) { 
     System.out.println(k); 
    } 
} 

Ouptut:

Batch List : 
C:\Batch\Batch1.jar 
C:\Batch\Batch2.jar 
C:\Batch\Batch3.jar 
C:\Batch\Batch4.jar 

Install List : 
C:\install\sql1.sql 
C:\install\sql2.sql 
C:\install\sql3.sql 
C:\install\sql4.sql 

Uninstall List : 
C:\uninstall\sql1.sql 
C:\uninstall\sql2.sql 
C:\uninstall\sql3.sql 
C:\uninstall\sql4.sql 
+0

這說明不了什麼:( 請參見後期編輯對我當前的代碼 – 2014-12-04 05:47:24

+0

輸出:[] [] [] – 2014-12-04 06:06:54

+0

請使用類似'檔案文件=新路徑在代碼中創建一個文件對象輸入:[BatchFiles] C:\ Batch \ Batch1。文件(路徑);'並使用掃描程序讀取該文件對象,例如'scanner = new Scanner(file);' – 2014-12-04 06:08:07