使用arraylist-Java的arraylist逐行读取文件

使用arraylist-Java的arraylist逐行读取文件,java,arraylist,file-io,Java,Arraylist,File Io,我试图创建一个方法,打开一个文件,然后逐行读取文件,无论文件的长度如何。每一行被分割成单词和标点符号(撇号除外),并存储在字符串的数组列表中。这些表示行的ArrayList存储在字符串ArrayList的ArrayList中 例如,如果文件包含 Hello World! Hi, hello. 然后第一个数组列表将包含字符串:“Hello”、“World”和“!” 第二个数组列表将包含字符串:“Hi”、“,”和“hello”、” 到目前为止,我有以下几点,不确定我是否走在正确的方向上 publi

我试图创建一个方法,打开一个文件,然后逐行读取文件,无论文件的长度如何。每一行被分割成单词和标点符号(撇号除外),并存储在字符串的数组列表中。这些表示行的ArrayList存储在字符串ArrayList的ArrayList中

例如,如果文件包含

Hello World!
Hi, hello.
然后第一个数组列表将包含字符串:“Hello”、“World”和“!” 第二个数组列表将包含字符串:“Hi”、“,”和“hello”、”

到目前为止,我有以下几点,不确定我是否走在正确的方向上

public static void readInputFile(String fileName, ArrayList<ArrayList<String>> fileByLine)
    throws IOException {

    File userFile = new File(fileName);

    try {
        if (userFile.exists()) {
            Scanner fileScanner = new Scanner(userFile);
            do {
                do {
                    fileByLine.add(fileScanner.next());
                } while (fileScanner.next() != null);
            } while (fileScanner.hasNext());
        }
    } catch (Exception e) {
        System.out.println("Exception: File '" + fileName + "' not found.");
    }
}
publicstaticvoidreadinputfile(字符串文件名,arraylistfilebyline)
抛出IOException{
File userFile=新文件(文件名);
试一试{
if(userFile.exists()){
Scanner fileScanner=新扫描仪(userFile);
做{
做{
add(fileScanner.next());
}while(fileScanner.next()!=null);
}while(fileScanner.hasNext());
}
}捕获(例外e){
System.out.println(“异常:文件“”+fileName+“'notfound.”);
}
}

下面的代码对我有用,你可以试试

public class ListOFList {

    public static ArrayList<String> stringspecial(String strLine) {
        String str = strLine;
         String arr[]=str.split(" ");

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

          for(int i=0;i<arr.length;i++) {
              Pattern pattern = Pattern.compile("[a-zA-Z0-9]*");
              Matcher matcher = pattern.matcher(arr[i]);


          if (!matcher.matches()) {
               char[] ch = arr[i].toCharArray();
               String substring="";

               for(int j=0;j<ch.length;j++) {


                   if(!(Character.isLetter(ch[j]))) {
                       String special = Character.toString(ch[j]);
                       list.add(special);
                   }else {
                       substring=substring+ch[j];
                       if(!(Character.isLetter(ch[j+1]))) {
                           list.add(substring);
                   }

                   }
               }


          } else {
              list.add(arr[i]);

          }

    }
          return list;
    }

    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub

        FileInputStream fi = new FileInputStream("<Path of the Input Text File>");
        BufferedReader br = new BufferedReader(new InputStreamReader(fi));
        String strLine;
        ArrayList<ArrayList<String>> listoflists = new ArrayList<ArrayList<String>>();
        ArrayList<String> list = new ArrayList<String>();
        while ((strLine = br.readLine()) != null)   {
            list=stringspecial(strLine);
            listoflists.add(new ArrayList(list));
            list.clear();    
              }
        for(int x = 0; x < listoflists.size(); x++)
        {

                System.out.print(listoflists.get(x));
                System.out.print(" ");

        }

        br.close();

                }

        }
公共类列表{
公共静态ArrayList stringspecial(字符串strLine){
字符串str=strLine;
字符串arr[]=str.split(“”);
ArrayList=新建ArrayList();
对于(int i=0;i),请查看该网站的工作原理、主题中的问题以及相应的问题。另请参见: