2013-02-27 420 views
1

首先我是Java新手。拆分文本文件

我想在用戶指定的txt文件上使用Split()函數。 它應該使用空格拆分文件以輸出一個字符串數組。 我正在使用JFileChooser,但我不知道如何執行拆分選定的txt文件。我正在使用掃描儀來執行此操作。如果您需要拆分

   JFileChooser chooser = new JFileChooser("C:\\"); 
      chooser.setFileSelectionMode(JFileChooser.FILES_ONLY); 

      FileNameExtensionFilter filter = new FileNameExtensionFilter(
      ".txt and .java files", "txt", "java"); 
      chooser.setFileFilter(filter); 


      int code = chooser.showOpenDialog(null); 
      if (code == JFileChooser.APPROVE_OPTION) { 
      File selectedFile = chooser.getSelectedFile(); 
      Scanner input; 
      try { 
       input = new Scanner(selectedFile); 

       while (input.hasNext()) { 

       String[] splits = input.next().split(" "); 
       } 
       } catch (FileNotFoundException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 


} 
      } 
+1

什麼是'f'?另外,爲什麼它也被用作例外? – Doorknob 2013-02-27 23:45:04

+0

我希望它是來自Jfilechooser的選定txt文件,以便它可以將文件拆分成一個數組。我不知道該怎麼做。 – 2013-02-27 23:51:20

回答

2

:/

我已到目前爲止 - :

請,如果有人可以使代碼完成後,由於某種原因,我不能讓我的頭周圍按空格字符輸入,然後用空格而不是空字符串包含一個字符串。更換

String[] splits = f.split(""); 

String[] splits = f.split(" "); // One space 

正如其他人所指出的那樣,f沒有在你的塊中聲明。您必須將其聲明爲String並使用您的Scanner來讀取輸入到f,然後使用split

+2

+1或使用'\\ s'。對於多個空間'\\ S +' – PermGenError 2013-02-27 23:45:22

+0

是的,當然忘了添加那個空間。 – 2013-02-27 23:46:45

+0

@PremGenError是的,如果輸入的文件名之間存在多個空格或其他空格,則這將是必需的。 – rgettman 2013-02-27 23:46:48

0
f.split(""); 

​​3210

是有標籤和雙空間安全。

+0

到目前爲止,我和你們在一起,並且已經清理了我的代碼。如果有人能夠編寫代碼,請出於某種原因,我只是無法理解它。 @Mike? – 2013-02-28 00:10:56

0

什麼是f?它在任何地方都沒有聲明,除非在之前被使用之後作爲例外,這是沒有意義的。

while循環應該寫成這樣:

while (input.hasNextLine()) { 

    String line = input.nextLine(); 
    String[] splits = line.split(" "); 
    // put the result of split somewhere 
} 
0
while (input.hasNext()) { 

     String[] splits = f.split(""); 

     input.next(); 
    } 

    System.out.println(f); 

首先,從未使用過splits。其次,input.next()永遠不會存儲在變量中。另外,我不知道f是什麼。嘗試是這樣的:

while (input.hasNext()) { 

     String[] splits = input.next().split(" "); 
     someList.add(splits); 

    } 

你可以聲明someList,就像這樣new ArrayList<String[]>()