Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:将文本文件拆分为多个列表_Java - Fatal编程技术网

Java:将文本文件拆分为多个列表

Java:将文本文件拆分为多个列表,java,Java,我正在寻找一种将文本文件拆分为一组ArrayList的有效方法。文本文件是一个线程转储,我想为每个线程创建一个列表。每个线程都由一条空行分隔。 例如,以以下文件为例: "management-handler-thread - 66" prio=10 tid=0x00007fe960111000 nid=0x4cea waiting on condition [0x00007fe96c25c000] java.lang.Thread.State: TIMED_WAITING (parking

我正在寻找一种将文本文件拆分为一组ArrayList的有效方法。文本文件是一个线程转储,我想为每个线程创建一个列表。每个线程都由一条空行分隔。 例如,以以下文件为例:

"management-handler-thread - 66" prio=10 tid=0x00007fe960111000 nid=0x4cea waiting on condition [0x00007fe96c25c000]
   java.lang.Thread.State: TIMED_WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000006019cbbd0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:226)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2082)
        at java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:467)

"management-handler-thread - 65" prio=10 tid=0x00007fe968185800 nid=0x4ce9 waiting on condition [0x00007fe96c35d000]
   java.lang.Thread.State: TIMED_WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000006019cbbd0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:226)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2082)
        at java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:467)
第二份清单应包括:

"management-handler-thread - 66" prio=10 tid=0x00007fe960111000 nid=0x4cea waiting on condition [0x00007fe96c25c000]
   java.lang.Thread.State: TIMED_WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
. . .
"management-handler-thread - 65" prio=10 tid=0x00007fe968185800 nid=0x4ce9 waiting on condition [0x00007fe96c35d000]
   java.lang.Thread.State: TIMED_WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
. . . .
你建议怎么做?(迭代,正则表达式..)
谢谢

不需要正则表达式,只需逐行阅读文件

List<List<String>> dumpedThreads = new ArrayList<>();
try (FileReader fr = new FileReader("path/to/thread-dump.txt")) {
    try (BufferedReader br = new BufferedReader(fr)) {
        List<String> thisThread = null;
        for (String line = br.readLine(); line != null; line = br.readLine()) {
            if (line.trim().length() == 0) {
                thisThread = null;
            } else {
                if (thisThread == null) {
                    thisThread = new ArrayList<>();
                    dumpedThreads.add(thisThread);
                }
                thisThread.add(line);
            }
        }
    }
}
List dumpedThreads=new ArrayList();
try(FileReader fr=newfilereader(“path/to/thread dump.txt”)){
try(BufferedReader br=新的BufferedReader(fr)){
List thisThread=null;
对于(字符串line=br.readLine();line!=null;line=br.readLine()){
如果(line.trim().length()==0){
thisThread=null;
}否则{
if(thisThread==null){
thisThread=newarraylist();
dumpedThreads.add(thisThread);
}
添加(行);
}
}
}
}

不需要正则表达式,只需逐行读取文件

List<List<String>> dumpedThreads = new ArrayList<>();
try (FileReader fr = new FileReader("path/to/thread-dump.txt")) {
    try (BufferedReader br = new BufferedReader(fr)) {
        List<String> thisThread = null;
        for (String line = br.readLine(); line != null; line = br.readLine()) {
            if (line.trim().length() == 0) {
                thisThread = null;
            } else {
                if (thisThread == null) {
                    thisThread = new ArrayList<>();
                    dumpedThreads.add(thisThread);
                }
                thisThread.add(line);
            }
        }
    }
}
List dumpedThreads=new ArrayList();
try(FileReader fr=newfilereader(“path/to/thread dump.txt”)){
try(BufferedReader br=新的BufferedReader(fr)){
List thisThread=null;
对于(字符串line=br.readLine();line!=null;line=br.readLine()){
如果(line.trim().length()==0){
thisThread=null;
}否则{
if(thisThread==null){
thisThread=newarraylist();
dumpedThreads.add(thisThread);
}
添加(行);
}
}
}
}

不需要正则表达式,只需逐行读取文件

List<List<String>> dumpedThreads = new ArrayList<>();
try (FileReader fr = new FileReader("path/to/thread-dump.txt")) {
    try (BufferedReader br = new BufferedReader(fr)) {
        List<String> thisThread = null;
        for (String line = br.readLine(); line != null; line = br.readLine()) {
            if (line.trim().length() == 0) {
                thisThread = null;
            } else {
                if (thisThread == null) {
                    thisThread = new ArrayList<>();
                    dumpedThreads.add(thisThread);
                }
                thisThread.add(line);
            }
        }
    }
}
List dumpedThreads=new ArrayList();
try(FileReader fr=newfilereader(“path/to/thread dump.txt”)){
try(BufferedReader br=新的BufferedReader(fr)){
List thisThread=null;
对于(字符串line=br.readLine();line!=null;line=br.readLine()){
如果(line.trim().length()==0){
thisThread=null;
}否则{
if(thisThread==null){
thisThread=newarraylist();
dumpedThreads.add(thisThread);
}
添加(行);
}
}
}
}

不需要正则表达式,只需逐行读取文件

List<List<String>> dumpedThreads = new ArrayList<>();
try (FileReader fr = new FileReader("path/to/thread-dump.txt")) {
    try (BufferedReader br = new BufferedReader(fr)) {
        List<String> thisThread = null;
        for (String line = br.readLine(); line != null; line = br.readLine()) {
            if (line.trim().length() == 0) {
                thisThread = null;
            } else {
                if (thisThread == null) {
                    thisThread = new ArrayList<>();
                    dumpedThreads.add(thisThread);
                }
                thisThread.add(line);
            }
        }
    }
}
List dumpedThreads=new ArrayList();
try(FileReader fr=newfilereader(“path/to/thread dump.txt”)){
try(BufferedReader br=新的BufferedReader(fr)){
List thisThread=null;
对于(字符串line=br.readLine();line!=null;line=br.readLine()){
如果(line.trim().length()==0){
thisThread=null;
}否则{
if(thisThread==null){
thisThread=newarraylist();
dumpedThreads.add(thisThread);
}
添加(行);
}
}
}
}


迭代行,根据读取的数据插入适当的列表输入文件有多大?您很可能不想立即将大日志文件加载到内存中,而是使用流。为什么要将结果写入ArrayList?您也可以直接将它们写入单独的文件中。对输入文件使用BufferedReader,对输出文件使用PrintWriter,每次遇到空行时,都将当前条目写入相应的文件。迭代行,根据读取的数据插入相应的列表输入文件有多大?您很可能不想立即将大日志文件加载到内存中,而是使用流。为什么要将结果写入ArrayList?您也可以直接将它们写入单独的文件中。对输入文件使用BufferedReader,对输出文件使用PrintWriter,每次遇到空行时,都将当前条目写入相应的文件。迭代行,根据读取的数据插入相应的列表输入文件有多大?您很可能不想立即将大日志文件加载到内存中,而是使用流。为什么要将结果写入ArrayList?您也可以直接将它们写入单独的文件中。对输入文件使用BufferedReader,对输出文件使用PrintWriter,每次遇到空行时,都将当前条目写入相应的文件。迭代行,根据读取的数据插入相应的列表输入文件有多大?您很可能不想立即将大日志文件加载到内存中,而是使用流。为什么要将结果写入ArrayList?您也可以直接将它们写入单独的文件中。输入文件使用BufferedReader,输出文件使用PrintWriter,每次遇到空行时,都会将当前条目写入相应的文件。只有当
thread dump.txt
按线程排序时,这才有效。感谢您的建议!只有当
thread dump.txt
按线程排序时,这才有效。谢谢您的建议!只有当
thread dump.txt
按线程排序时,这才有效。谢谢您的建议!只有当
thread dump.txt
按线程排序时,这才有效。谢谢您的建议!