2014-10-03 100 views
0

我的输入文件:在java中读取输入文件

/home/gcj/finals 

我想有一个字符就/ 我的方法:

StringTokenizer sr = new StringTokenizer(br.readLine()); 
     String s = sr.nextToken("/"); 
       while(s != null){ 
        System.out.println(s); 
        s = sr.nextToken("/"); 
       } 

输出:

gcj 
finals 
Exception in thread "main" java.util.NoSuchElementException 
    at java.util.StringTokenizer.nextToken(Unknown Source) 
    at java.util.StringTokenizer.nextToken(Unknown Source) 
    at jobs.TestClass.main(TestClass.java:118) 

请帮助我出去了。或者如果有更好的方法。

+1

你是指“每个字符”还是“每个字符串”?每个字符都是'h','g','f' – Stewart 2014-10-03 15:45:35

回答

0

正如StringTokenizer文档解释的那样,您必须使用hasMoreTokens方法来循环,而不是将next()与null进行比较。

StringTokenizer st = new StringTokenizer(...); 
while (st.hasMoreTokens()) { 
    System.out.println(st.nextToken()); 
} 

再次,作为文档说明,split是一个更好的选择,一般拆分字符串。

最后,由于您正尝试逐行读取文件,因此您应该查看类似Apache Commons的库,它们在FileUtils.lineIterator中有您要找的内容。

0
for (String s : "/home/gcj/finals".split("/")) { 
    System.out.println(s); 
} 
+0

你应该添加一些解释为什么这是一个答案。 – Whymarrh 2014-10-03 16:11:57

0

如果要读取一个文件,你可以采取的类IO,在从hereOut。然后你可以简单地调用IO.in.readFile(String filename)

希望它有帮助。

克莱门西奥莫拉莱斯卢卡斯。

1

而不是while(s!= null),使用hasMoreTokens()。