자바의 BufferedReader 빈 txt 파일을 읽어 만, null을 반환하지 않습니다

Kcits :

나는 빈 txt 파일을 읽을 자바의 BufferedReader를 사용했습니다.

여기 내 코드는 :

    File recentFile = new File(path);
    try {
            BufferedReader reader = new BufferedReader(newInputStreamReader(newFileInputStream(recentFile), "UTF-8"));
            String temp = reader.readLine();
            reader.close();
            if (temp == null) {System.out.println("your file is empty");}
            else {System.out.println(temp);}
    } catch (IOException ex) {}

TXT 파일에는 완전히 비어 있지만 프로그램, 밖으로 명령 프롬프트 인쇄를 실행할 때 "?" 대신 "당신의 파일이 비어 있습니다."

나는 "유니 코드"에 "UTF-8"로 변경하고, 유니 코드 형식으로 인코딩 내 txt 파일을 변경할 때, 나는 프롬프트에서 "파일이 비어"얻는다.

내가 UTF-8을 사용할 때 이유는이 결과를받을 수 있나요?

BTW, 이것은 중복 된 경우 내가 구글에 여러 번 검색을 시도했지만 나에게 도움이 아무것도 찾을 수 없습니다 알려 주시기 바랍니다.

rzwitserloot :

이 파일은 완전히 비어 있지; 그 유일한 설명이다. 대부분의 경우 시작에서 바이트 순서 표시가있다. 이것은 (당신이 메모장에서 파일을 열면, 아마 겉으로는 완전히 비어로 표시됩니다) 캐릭터처럼 보이지 않지만, 계산을 수행합니다.

나는 그것이 널 (null)을 반환 시작하기 전에 BR 아마 1 빈 문자열 처음으로 돌아갑니다 믿고 참고; 그러나,이 (가 있다면, 당신은 당신의 프로그램 프린트를 보았다하지 않을 여기서 무슨 일이 있었는지되지 않습니다 ?).

당신은 헥스 편집기가 실제 바이트를 확인할 수 있습니다. 또한, 자바 코드의이 조각은 당신을 말할 것이다 :

try (var in = new FileInputStream("/path/to/the/file")) {
    for (int c = in.read(); c != -1; c = in.read()) {
       System.out.print("%02X", c & 0xFF);
    }
}
System.out.println();

추천

출처http://43.154.161.224:23101/article/api/json?id=21000&siteId=1