Java file is not empty

Java: Проверьте, пуст ли файл или каталог

В этом уроке мы рассмотрим примеры кода о том, как проверить, пуст ли файл или каталог в Java, используя классы File, Files и DirectoryStream.

Вступление

В Java работа с файлами и каталогами довольно распространена. Мы также часто интересуемся содержимым этих файлов и каталогов.

В зависимости от содержимого файла мы можем захотеть вести себя по-разному. Возможно, мы записываем некоторые данные в файл, и сначала мы хотим проверить, содержит ли он уже некоторую информацию, прежде чем перезаписывать ее. Аналогично, мы можем захотеть удалить каталог, если он пуст. Знание того, пусто оно или нет, может в таких случаях иметь жизненно важное значение.

В этом уроке мы рассмотрим несколько примеров того, как проверить, пуст ли файл или каталог в Java.

Проверьте, пуст ли файл в Java

Есть два способа проверить, пуст ли файл |.

Мы будем работать с двумя файлами, одним пустым и одним непустым:

09/17/2020 01:00 PM 0 file 09/17/2020 01:00 PM 2 file2

файл является 0 байт в длину, в то время как файл2 равен 2 байт в длину.

Стоит отметить, что перед выполнением каких-либо операций с файлом или каталогом следует проверить , существует ли файл или каталог, а также их тип, чтобы избежать использования неправильных методов.

Читайте также:  Php require mysql connection

Использование File.length()

Согласно его документации , объект File является “абстрактным представлением имен файлов и каталогов”. Каждый Файл объект имеет методы для получения информации об этом конкретном файле.

Давайте продолжим и создадим простой вспомогательный метод, который возвращает true , если длина файла равна 0 и ложь в противном случае:

public boolean isFileEmpty(File file)

Теперь давайте проверим это на пустом и непустом файле:

File file1 = new File("/file"); File file2 = new File("/file2"); System.out.println(isFileEmpty(file1)); System.out.println(isFileEmpty(file2));

Использование BufferedReader

Другой способ проверить, является ли длина файла | 0 или нет — это использовать BufferedReader . Это позволяет нам получать содержимое символов из потоков (например, файлов). Если в файле нет содержимого, он пуст:

public boolean isFileEmpty(File file)

Объявление метода остается таким же, как и раньше: он принимает Файл и возвращает логическое значение . Хотя на этот раз мы создали экземпляр BufferedReader и предоставили ему Файловый редактор , который принимает ваш Файл . Это немного сложнее, чем раньше, но оно выполняет свою работу так же хорошо.

Затем, если BufferedReader не имеет ничего для чтения из файла, мы знаем, что он пуст.

Еще раз, давайте проверим это на пустом и непустом файле:

File file1 = new File("/file"); File file2 = new File("/file2"); System.out.println(isFileEmpty(file1)); System.out.println(isFileEmpty(file2));

Проверьте, пуст ли каталог в Java

Также есть два способа проверить, пуст ли каталог в Java.

Использование File.list()

Класс File имеет удобный метод для сбора всех файлов и каталогов ( записей , то есть как файлов, так и каталогов) внутри данного каталога. Мы можем использовать этот метод, чтобы проверить, равно ли количество таких записей нулю:

Git Essentials

Ознакомьтесь с этим практическим руководством по изучению Git, содержащим лучшие практики и принятые в отрасли стандарты. Прекратите гуглить команды Git и на самом деле изучите это!

public boolean isDirectoryEmpty(File directory)

Метод возвращает массив имен записей. Если длина этого массива равна 0 , каталог пуст.

Давайте запустим это в пустом и непустом каталоге:

File directory1 = new File("/empty_directory"); File directory2 = new File("/directory"); System.out.println(isDirectoryEmpty(directory1)); System.out.println(isDirectoryEmpty(directory1));

Использование потока каталогов

Другой быстрый, хотя и более продвинутый, метод включает использование потоков. Сначала мы создаем новый Поток каталогов , вызывая Files.newDirectoryStream() класс. Этот метод принимает Путь , поэтому нам нужно преобразовать наш Файл в Путь , вызвав метод toPath() :

public boolean isDirectoryEmpty(File directory) throws IOException < DirectoryStreamstream = Files.newDirectoryStream(directory.toPath()); return !stream.iterator().hasNext(); > 

Затем мы собираем итератор потока и проверяем, содержит ли он следующую запись, вызывая hasNext() . Если в нем нет хотя бы одной записи, каталог пуст.

Давайте запустим этот код:

File directory1 = new File("/empty_directory"); File directory2 = new File("/directory"); System.out.println(isDirectoryEmpty(directory1)); System.out.println(isDirectoryEmpty(directory1));

Вывод

В этом уроке мы привели несколько примеров проверки того, пусты ли файлы и каталоги. Сначала мы проверили, пусты ли файлы, используя класс File и его метод length () , а затем метод BufferedReader .

Затем мы проверили, пуст ли каталог, используя File.list() и создав Поток каталогов .

Читайте ещё по теме:

Источник

How to check if File is Empty in Java? Example Tutorial

One of the readers of my blog Javarevisited emailed me yesterday about how to check if a file is empty in Java and that’s why I am writing this post to show that using an example. The common approach for checking if a file is empty or not is to first check if the file exists or not and then check if it contains any content, but Java has done that hard work for you. Well, it’s pretty easy to check emptiness for a file in Java by using the length() method of the java.io.File class. This method returns zero if the file is empty, but the good thing is it also returns zero if the file doesn’t exist. This means you don’t need to check if the file exists or not.

Btw, when it comes to deciding the emptiness of a file, some applications might be different than others. For example, some applications may consider a file with just whitespace as empty but some may not.

The length() method will not consider them empty, which means if you just type the space bar in your file it looks empty but it won’t be considered empty by your Java program.

If you have such a requirement then you need to put a special logic that involves reading the file and analyzing content. Anyway, in this article, I’ll explain to you how to check if the given file is empty in Java using a sample program. First, we’ll without creating a file.

If you remember, File class is used to represent both file and directory in Java but it’s nothing but a path. When you say new File(«C:\\myfile.txt») it doesn’t create a file but a handle to that path. That’s why we can create a File object to the given path and call its length() method to check if the file is empty or not.

After that, we’ll create a new file and verify again, this time also our code should say the file is empty because even though the file exists, there is nothing in it.

In the last step, we’ll write something in the file and repeat the process. This time our program should print the file that is not empty.

By the way, if you are new to Java then I also suggest you join a comprehensive Java course like The Complete Java Masterclass course on Udemy to learn Java in a more structured and guided way. This 80-hour course is the most up-to-date and also very affordable. You can buy in just $10 on Udemy.


How to check if a file is empty in Java? Example

Without any further ado, here is our sample Java program to demonstrate how to check if a given file is empty or not.

package tool; import java.io.File; import java.io.FileWriter; import java.io.IOException; /** * * A simple example to check if file is empty in Java */ public class EmptyFileCheckerInJava public static void main(String args[]) throws IOException  // checking if file is empty // if file doesn't exits then also length() method will consider // it empty. File newFile = new File("cookbook.txt"); if (newFile.length() == 0)  System.out.println("File is empty . "); > else  System.out.println("File is not empty . "); > // Now let's create the file newFile.createNewFile(); // let's try again and check if file is still empty if (newFile.length() == 0)  System.out.println("File is empty after creating it. "); > else  System.out.println("File is not empty after creation. "); > // Now let's write something on the file FileWriter writer = new FileWriter(newFile); writer.write("Java is best"); writer.flush(); // don't forget to close the FileWriter writer.close(); // Now let's check again and verify if file is still empty if (newFile.length() == 0)  System.out.println("File is still empty after writing into it. "); > else  System.out.println("File is not empty after writing something . "); > > > Output File is empty . File is empty after creating it. File is not empty after writing something . 

You can clearly see that when we first checked by creating a File object, we got the File is empty because the file didn’t even exist. Remember, a file is not created in Java until you call the createNewFile() method.

After that, we checked again but this time also we got the File is empty output because even though the file exists it was actually empty, nothing was written on it. In the third case, we writing one line «Java is great» on file using FileWriter and then checked again. Boom. this time the file wasn’t empty which means our code is working fine as expected.

You can also copy-paste this program in your Eclipse IDE and run and it should print the same output the very first time.

How to check if a file is empty in Java? Example

But, after that, the output will change and it will always print:

File is not empty .
File is not empty after creation.
File is not empty after writing something .. .

Well, because after the first run of this program, you should already have a cookbook.txt file in your Eclipse’s project directory and it is not empty hence it prints not empty. The createNewFile() method will not override if a file with the same name already exists.

Another thing, which you should keep in mind is calling the flush() or close() method after writing something on file. For example, if you remove the flush( ) method and check if the file is empty or not, you may receive an incorrect result i.e. file is empty, even after you have written something on it.

Well, because the content may not be flushed to the file when you checked, that’s why calling flush() is important before checking.

That’s all about how to check if a file is empty in Java. You can simply call the length() method without worrying about whether the file exists or not. This method returns zero if the file doesn’t exist or the file is actually empty, I mean doesn’t contain anything. This is also the safe and simplest way to check file size in Java.

Other Java Tutorials and Articles You may like

  • 21 Tech Skill Java Developers can Learn Today (Skills)
  • 10 Advanced Core Java Courses for Experienced (courses)
  • How to append text to an existing file in Java (tutorial)
  • 10 Free Courses to learn Java in Depth (free courses)
  • How to load CSV files in Java? (tutorial)
  • 20+ Spring Boot Interview Questions with Answers (list)
  • 5 Best Websites to learn Java Online for FREE (websites)
  • 10 Java Frameworks for Full Stack Development (frameworks)
  • 10 Free Courses to learn Fullstack Java (free courses)
  • 15 Spring Data JPA Interview Questions (list)
  • 15 Microservices Interview Questions with Answers (list)
  • 25 Spring Security Interview Questions (answers)
  • How to parse CSV File in Java using Jackson (example)

P. S. — If you are a complete beginner in Java and looking for a free online course to start learning Java from scratch then I highly recommend you to check out Java Tutorial for Complete Beginners (FREE) course on Udemy. More than 1.2 million people have used this free course to learn Java so far.

Источник

Оцените статью