将文件读入char []数组或arraylist

时间:2014-02-24 03:05:22

标签: java arrays char

我需要从用户那里读取文本并创建一个包含字符的数组,以便我可以通过FSM运行它们。但是,我似乎无法让缓冲的读者同意非字符串类型的输入。有什么建议?我也不知道我是否应该使用数组或arraylist

 static ArrayList<Character> StringList = new ArrayList<Character>();
static char[] data;
 public static void main(String[] args){

    InputStreamReader ISR = new InputStreamReader (System.in);
    BufferedReader BR = new BufferedReader(ISR);
    try{
        String sCurrentChar;
        while((sCurrentChar=BR.readLine())!=null){

            for(int i= 0; i<sCurrentChar.length(); i++)
            StringList.add(sCurrentChar.charAt(i));


        }
       for(int i =0; i<StringList.size(); i++){
           System.out.println(StringList.get(i));
       }
    } catch(IOException e){
        e.printStackTrace();
    }
 }

1 个答案:

答案 0 :(得分:0)

如果您想要读取原始字节数据,或者稍后可能将它们用作字符,那么以下内容可能对您有用。这可能是比一次读取输入行更好的方法。

import java.io.DataInputStream;
import java.io.EOFException;
import java.io.IOException;
import java.util.Arrays;

public class a {
  public static void main(String[] args){
    DataInputStream d = new DataInputStream(System.in);
    int[] bytes = new int[256];

    try {
      int b;
      int l = 0;
      while((b = d.readByte()) > 0) {
        bytes[l++] = b;
        if((l % 256) == 0)
          bytes = Arrays.copyOf(bytes, (l + 256));
      }
    } catch(EOFException e) {
      // end-of-file
    } catch(IOException e) {
      System.err.println("AIEEEE: " + e);
      System.exit(-1);
    }

    for(int i = 0; bytes[i] > 0; i++) System.out.print((char)bytes[i]);
    System.exit(0);
  }
}

这里处理数组的方式可能是一个很好的例子,一个人不应该这样做,但同样,这更多的是读取数据的字节/无符号字符而不是有效地处理数组。