将长文件扫描到java映射中

将长文件扫描到java映射中,java,text,java.util.scanner,Java,Text,Java.util.scanner,我正在尝试读取一个文本文件,该文件是我使用另一个代码创建的,用于填写地图,但是扫描仪会继续提前停止,但是如果我删除文本文档中停止的行,扫描仪将继续运行一段时间,然后再次卡住。我不明白为什么它会卡在某些线路上。我添加了一个链接到我正在扫描的文本文档。例如,无论何时写入,castlevania线的第一个实例都会阻塞系统,在文档中,它显示在第307行。如果该线路被拆除,则会在第383行Conta处的停车处发生故障。然后,如果将其移除,它将在第479行的Dig Dig处断裂。它继续以这种方式停止在似乎没

我正在尝试读取一个文本文件,该文件是我使用另一个代码创建的,用于填写地图,但是扫描仪会继续提前停止,但是如果我删除文本文档中停止的行,扫描仪将继续运行一段时间,然后再次卡住。我不明白为什么它会卡在某些线路上。我添加了一个链接到我正在扫描的文本文档。例如,无论何时写入,castlevania线的第一个实例都会阻塞系统,在文档中,它显示在第307行。如果该线路被拆除,则会在第383行Conta处的停车处发生故障。然后,如果将其移除,它将在第479行的Dig Dig处断裂。它继续以这种方式停止在似乎没有关系的随机行上,在名称或行号上。

import java.util.Iterator;
导入java.util.LinkedHashMap;
导入java.util.Map;
导入java.util.Scanner;
公开课阅读{
公共静态版画作者;
公共静态映射connectionsMap=新LinkedHashMap();
公共静态void main(字符串[]args){
设置();
迭代器it=connectionsMap.entrySet().Iterator();
int i=0;
while(it.hasNext()){
Map.Entry对=(Map.Entry)it.next();
System.out.println(pair.getKey()+“”+i);
i++;
it.remove();//避免ConcurrentModificationException
}
}
公共静态无效设置(){
File File=new File(“Degrees.txt”);//包含所有连接的文件
试一试{
扫描仪=新扫描仪(文件);
字符串说明=”;
String key=”“;//主系列的映射键
String secondKey=“;//主要系列连接映射的键
字符串文本=”;
while(scanner.hasNext()){
字符串see=scanner.next();
如果(参见.equals(“TITLEEND”)){
键=文本;
text=“”;
}
如果(参见.equals(“CONNECTIONTITLEEND”)){
secondKey=文本;
text=“”;
}
如果(参见.equals(“DESCRIPTIONEND”)|参见.equals(“终止”)){
描述=文本;
text=“”;
mapMaker(key,secondKey,description,false);
}如果(!see.equals(“终止”)&&!see.equals(“连接标题”)&&!see.equals(“描述”)&&!see.equals(“标题标题”)){

如果(text.length()文件中的哪一行被卡住了?(您可以编辑您的问题以包含它们。)
symbol.
Scanner Scanner=new Scanner(文件,“UTF-8”);
解决了您的问题吗?另外,请查看@John,它似乎解决了问题。非常感谢您似乎解决了问题。
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Scanner;
public class Read {
public static  PrintWriter writer;
public static Map<String, LinkedHashMap<String, String>> connectionsMap = new LinkedHashMap<String, LinkedHashMap<String,String>>() ;

public static void main(String[] args) {
    setUp();
    Iterator it = connectionsMap.entrySet().iterator();
    int i =0;
    while (it.hasNext()) {
        Map.Entry pair = (Map.Entry)it.next();
        System.out.println(pair.getKey() +" "+i);
        i++;
        it.remove(); // avoids a ConcurrentModificationException
    }
}
public static void setUp() {
    File file = new File("Degrees.txt");//file with all the connections
    try {
        Scanner scanner = new Scanner(file);
        String description = "";
        String key="";//key for map of main series
        String secondKey="";//key for map of a mian serieses connections
        String text = "";
        while(scanner.hasNext()) {
            String see = scanner.next();
            if(see.equals("TITLEEND")) {
                key=text;
                text="";
            }
            if(see.equals("CONNECTIONTITLEEND")) {
                secondKey=text;
                text="";
            }
            if(see.equals("DESCRIPTIONEND")||see.equals("TERMINATE")) {
                description =text;
                text="";
                mapMaker(key,secondKey,description, false);

            }if(!see.equals("TERMINATE")&&!see.equals("CONNECTIONTITLEEND")&&!see.equals("DESCRIPTIONEND")&&!see.equals("TITLEEND")) {
                if(text.length()<1)text=see;
                else text+=" "+see;
            }

        }   
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
public static void mapMaker(String key, String secondKey, String description, boolean recursed) { 
    if(!connectionsMap.containsKey(key)) {
        connectionsMap.put(key, new LinkedHashMap<String,String>());
    }if(!connectionsMap.get(key).containsKey(secondKey)) {
        connectionsMap.get(key).put(secondKey, description);
    }

if(!recursed) {
    mapMaker(secondKey,key,description,true);
}