문제

텍스트 파일을 읽기 위해 그물에서 복사 한 다음 기본 기능을 사용하고 있습니다.

    public void read ()
{
    File file = new File("/Users/MAK/Desktop/data.txt");
    System.out.println("Start");
    try
    {
        //
        // Create a new Scanner object which will read the data from the
        // file passed in. To check if there are more line to read from it
        // we check by calling the scanner.hasNextLine() method. We then
        // read line one by one till all line is read.
        //
        Scanner scanner = new Scanner(file);
        int lineCount = 0;
        if (scanner == null)
        {
            System.out.println("Null File");
        }
        else
        {
            System.out.println(scanner.toString());
        }
        while (scanner.hasNextLine())
        {
            String line = scanner.nextLine();

            System.out.println("Line " + lineCount +" contain : " + line);
            lineCount++;
        }
        System.out.println("End of Try Bluck");
    }
    catch (FileNotFoundException e)
    {
        e.printStackTrace();
        System.out.println("Exception Bluck");
    }
    System.out.println("End");
}
}

중간 크기 및 작은 크기 파일 (10 ~ 2 만 줄의 데이터가 포함되어 있음)으로 잘 작동하지만 5 억 개의 라인이 포함 된 파일로 작동하지 않았습니다. 나는 오류가 발생하지 않습니다 (적어도 아무도 보이지 않음). 그래서 무슨 일이 일어나고 있습니까? 그런 큰 파일을 준비하려면 여기서 어떻게해야합니까?

참고 : 4GB RAM으로 Windows Server 2008을 실행하는 테스트 머신에서 이미 2GB의 힙을 늘 렸습니다. 그러나 이것은 많은 도움이되지 않았습니다!

누구든지 내가 여기서 무엇을 해야하는지 말해 줄 수 있습니까?


업데이트 01

다음은 출력입니다

시작

java.util.scanner [delimiters = p {javawhitespace}+] [position = 0] [match valid = false] [indup input = false] [source close = false] [skipped = false] [그룹 분리기 = ,] [소수 분리기 =.] [양의 접두사 =] [음성 접두사 = q- e] [긍정적 인 접미사 =] [네거티브 접미사 =] [nan string = q� e] [Infinity String = q∞ e ]

시도의 끝

도움이 되었습니까?

해결책

Filereader와 함께 BufferedReader를 사용하는 것이 좋습니다

다른 팁

오류가 발생하지 않으면 오랜 시간이 걸릴 수 있습니다. 디스크가 여전히 활성화되어 있습니까? 콘솔 출력으로 무엇을하고 있습니까? 당신은 그것이 "작동하지 않았다"고 말하지만 그것이 실제로 어떻게 행동하는지 말하지 않았습니다. 당신은 무엇을보고 있습니까?

실제로 라인으로 아무것도하지 않기 때문에 메모리는 문제가되지 않아야합니다.

코드의 한 가지 문제 - 당신은 여부를 확인하고 있습니다 scanner 무효이지만 할 수는 없습니다 혹시 생성자 호출에 의해 반환 된 참조를 사용하고 있기 때문에 BE. 어떤 상황에 대처하려고 했습니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top