读取行并拆分为char数组

时间:2012-09-07 19:52:18

标签: java file-io bufferedreader

我无法理解为什么我的程序无法正常运行。它编译但没有打印。我的文件中有一个5个字符的单词。我需要从该文件中读取行,然后将其拆分为char数组,然后我要打印出来。谢谢!

import java.io.FileReader;
import java.io.IOException;
import java.io.BufferedReader;

public class test {
    public static void main(String[] args)
    {

        BufferedReader line = null;
        char[] array = new char[7];

        try{

            line = new BufferedReader(new FileReader(args[0]));

            String currentLine;
            while((currentLine = line.readLine()) != null)
            {
                array = currentLine.toCharArray();
            }

            for(int i = 0; i < array.length; i++)
            {
                System.out.print(array[i]);
            }

        }//try

        catch(IOException exception)
        {
            System.err.println(exception);
        }//catch

        finally
        {
            try 
            {
                if(line != null) 
                    line.close();
            }//try

            catch(IOException exception)
            { 
                System.err.println("error!" + exception);
            }//catch

        }//finally
    } // main
} // test

2 个答案:

答案 0 :(得分:3)

你的while循环会跳过除最后一行之外的所有行,因此你的最后一行可能是空的。要显示您可能拥有的每一行:

while ((currentLine = line.readLine()) != null) {
    array = currentLine.toCharArray();
    for (int i = 0; i < array.length; i++) {
        System.out.print(array[i]);
    }
    System.out.println();
}

或者如果你只有1行,你可以简单地使用:

String currentLine = line.readLine(); 
...

答案 1 :(得分:0)

您的程序仅打印最后一行

你必须循环打印。

while (....!=null)
{
 array = currentLine.toCharArray();

for(int i = 0; i < array.length; i++)
   {
      System.out.print(array[i]);
   }


}

如果上述问题不是检查您的文件权限。

检查您的系统可能是程序因文件许可而无法读取文件。