Java使用分隔符读取大文本文件

时间:2015-04-28 13:33:48

标签: java file readline

我正在尝试以下列形式阅读大型文本文件:

datadfqsjmqfqs+dataqfsdqjsdgjheqf+qsdfklmhvqziolkdsfnqsdfmqdsnfqsdf+qsjfqsdfmsqdjkgfqdsfqdfsqdfqdfssdqdsfqdfsqdsfqdfsqdfs+qsfddkmgqjshfdfhsqdflmlkqsdfqdqdf+

我想将文本文件中的这个字符串作为一个大的java字符串读取。这可能吗?我知道使用split方法。

它可以逐行读取它,但我真正需要的是将这个长文本字符串拆分为“+”符号。之后我想将它存储为数组,arraylist,list,......

任何人都可以帮我吗?因为互联网上的每个信息都只是逐行读取文件。 提前谢谢!

6 个答案:

答案 0 :(得分:3)

String inpStr = "datadfqsjmqfqs+dataqfsdqjsdgjheqf+qsdfklmhvqziolkdsfnqsdfmqdsnfqsdf+qsjfqsdfmsqdjkgfqdsfqdfsqdfqdfssdqdsfqdfsqdsfqdfsqdfs+qsfddkmgqjshfdfhsqdflmlkqsdfqdqdf+";

String[] inpStrArr = inpStr.split("+");

希望这就是你所需要的。

答案 1 :(得分:2)

在我看来,您的问题是您不想逐行读取文件。因此,请尝试将其分成几部分(每次说20个字符并构建字符串):

char[] c = new char[20]; //best to save 20 as a final static somewhere

ArrayList<String> strings = new ArrayList<String>();
StringBuilder sb = new StringBuilder();

BufferedReader br = new BufferedReader(new FileReader(filename));

while (br.read(c) == 20) {

    String str = new String(c);

    if (str.contains("+") {

        String[] parts = str.split("\\+");
        sb.append(parts[0]);
        strings.add(sb.toString());

        //init new StringBuilder:
        sb = new StringBuilder();
        sb.add(parts[1]);

    } else {
        sb.append(str);
    }
}

答案 2 :(得分:2)

您可以使用BufferedReader或任何IO-classes读取文件。假设您在testing.txt文件中包含该字符串,然后通过读取文件中的每一行,您可以通过分隔符将其拆分(+ )。并迭代数组和打印。

BufferedReader br = null;
    try {
        String sCurrentLine;
        br = new BufferedReader(new FileReader("C:\\testing.txt"));//file name with path
        while ((sCurrentLine = br.readLine()) != null) {
               String[] strArr = sCurrentLine.split("\\+");
               for(String str:strArr){
                    System.out.println(str);
                      }
            }

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (br != null)br.close();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }

答案 3 :(得分:2)

你应该能够获得一个长度为Integer.MAX_VALUE的字符串(Java规范始终为2147483647(231-1),数组的最大大小,String类用于内部存储)或最大堆的一半大小(因为每个字符是两个字节),以较小者为准

How many characters can a Java String have?

答案 4 :(得分:0)

试试这个:

private static void readLongString(File file){
    ArrayList<String> list = new ArrayList<String>();
    StringBuilder builder = new StringBuilder();
    int r;
    try{
        InputStream in = new FileInputStream(file);
        Reader reader = new InputStreamReader(in);
            while ((r = reader.read()) != -1) {
                if(r=='+'){
                    list.add(builder.toString());
                    builder = new StringBuilder();
                }
                builder.append(r);
            }
    }catch (IOException ex){
        ex.printStackTrace();
    }
    for(String a: list){
        System.out.println(a);
    }
}

答案 5 :(得分:0)

这是一种方法,请注意,您不能加载超过最大int大小(大约1 GB)

&#13;
&#13;
  FileReader fr=null;
  try {
      File f=new File("your_file_path");
      fr=new FileReader(f);
      char[] chars=new char[(int)f.length()];
      fr.read(chars);
      String s=new String(chars);
      //parse your string here
  } catch (Exception e) {
      e.printStackTrace();
  }finally {
      if(fr!=null){
          try {
              fr.close();
          } catch (IOException e) {

          }
      }
  }
&#13;
&#13;
&#13;