使用扫描程序从传递的文件创建字符串数组

时间:2013-04-17 02:37:45

标签: java arrays string file

我正在尝试从作为参数传递的.txt文件创建一个字符串数组,但我遇到了问题。有帮助吗?这是我的代码:

public String[] getStrings( String filename ){

    File sourceFile = new File(filename);
    Scanner input = new Scanner(sourceFile);
    String[] strArray;

    while(input.hasNext()){
      String s1 = input.nextLine();
      strArray = s1.toArray();
    }

    return strArray;
}

2 个答案:

答案 0 :(得分:2)

你在这个方法中遇到了一些问题需要解决。首先,无论何时处理文件i / o,几乎总是存在IOException的风险,所以你想要在某个地方捕获它。例如,您可以将整个代码包装在:

public String[] getStrings( String filename ){
    try {
        //Method content
    } catch (IOException e) {
        e.printStackTrace();
    }
}

其次,数组是固定大小,这意味着您需要预先知道数组的大小。而且由于您不知道(文件可能包含任意数量的行),您需要使用可变大小的容器,例如ArrayList
您可以按如下方式声明ArrayList

ArrayList<String> strArray = new ArrayList<String>();

这将创建一个空的ArrayList。现在,使用strArray = s1.toArray();代替strArray.add(s1)

然后,要转换回数组(为您的方法返回一个数组),请使用strArray.toArray(new String[]{})new String[]{}参数必须告诉编译器这实际上是一个字符串数组,而不是一般的对象之一。

答案 1 :(得分:1)

我认为你想使用strArray.append(s1);。否则,您每次都会覆盖strArray,并且只接收来自文本文件最后一行的信息。

编辑:忘了数组大小:(对我来说网页脚本太多了......这个链接应该有所帮助。 How to add new elements to an array?