【问题标题】:Reading an input file in java在java中读取输入文件
【发布时间】:2014-10-03 23:49:08
【问题描述】:

我的输入文件:

/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)

请帮帮我。或者如果有更好的方法。

【问题讨论】:

  • 你的意思是“每个字符”还是“每个字符串”?每个字符将是“h”、“g”、“f”

标签: java


【解决方案1】:

使用 hasMoreTokens() 代替 while (s != null)。

【讨论】:

    【解决方案2】:
    for (String s : "/home/gcj/finals".split("/")) {
       System.out.println(s);
    }
    

    【讨论】:

    • 你应该添加一些解释为什么这是一个答案。
    【解决方案3】:

    如果你想读取一个文件,你可以从here获取类IO、In和Out。然后你可以简单地调用IO.in.readFile(String filename)

    希望对你有帮助。

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

    【讨论】:

      【解决方案4】:

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

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

      再一次,正如文档解释的那样,split 通常是拆分字符串的更好选择。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-03
        • 1970-01-01
        • 2021-01-26
        • 2017-07-01
        相关资源
        最近更新 更多