Самый эффективный способ проверить, является ли файл пустым в Java на Windows - PullRequest
24 голосов
/ 25 августа 2011

Я пытаюсь проверить, является ли файл журнала пустым (то есть без ошибок) или нет, в Java, в Windows.До сих пор я пытался использовать 2 метода.

Метод 1 (сбой)

FileInputStream fis = new FileInputStream(new File(sLogFilename));  
int iByteCount = fis.read();  
if (iByteCount == -1)  
    System.out.println("NO ERRORS!");
else
    System.out.println("SOME ERRORS!");

Метод 2 (сбой)

File logFile = new File(sLogFilename);
if(logFile.length() == 0)
    System.out.println("NO ERRORS!");
else
    System.out.println("SOME ERRORS!");

Теперь оба эти метода терпят неудачу иногда, когда файл журнала пуст (не имеет содержимого), но размер файла не равен нулю (2 байта).

Что является наиболее эффективным и точный способ проверить, пуст ли файл?Я попросил об эффективности, так как мне нужно постоянно проверять размер файла в цикле.

Примечание: Размер файла колеблется от нескольких до 10 КБ!

Метод 3 (сбой)

Следуя совету @ Cygnusx1, я тоже попытался использовать FileReader, но безуспешно.Вот фрагмент, если кому-то интересно.

Reader reader = new FileReader(sLogFilename);
int readSize = reader.read();
if (readSize == -1)
    System.out.println("NO ERRORS!");
else
    System.out.println("SOME ERRORS!");

Ответы [ 11 ]

0 голосов
/ 25 августа 2011

Украдено у http://www.coderanch.com/t/279224/Streams/java/Checking-empty-file

FileInputStream fis = new FileInputStream(new File("file_name"));  
int b = fis.read();  
if (b == -1)  
{  
  System.out.println("!!File " + file_name + " emty!!");  
}  

Обновлено: мой первый ответ был преждевременным и содержал ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...