我正在尝试以下列形式阅读大型文本文件:
datadfqsjmqfqs+dataqfsdqjsdgjheqf+qsdfklmhvqziolkdsfnqsdfmqdsnfqsdf+qsjfqsdfmsqdjkgfqdsfqdfsqdfqdfssdqdsfqdfsqdsfqdfsqdfs+qsfddkmgqjshfdfhsqdflmlkqsdfqdqdf+
我想将文本文件中的这个字符串作为一个大的java字符串读取。这可能吗?我知道使用split方法。
它可以逐行读取它,但我真正需要的是将这个长文本字符串拆分为“+”符号。之后我想将它存储为数组,arraylist,list,......
任何人都可以帮我吗?因为互联网上的每个信息都只是逐行读取文件。 提前谢谢!
答案 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类用于内部存储)或最大堆的一半大小(因为每个字符是两个字节),以较小者为准
答案 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)
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;