- How to check if a directory is empty in java?
- Method 1: Using listFiles() method
- Method 2: Using the DirectoryStream class
- Method 3: Using Apache Commons IO Library
- How to Check if a Directory is Empty in Java
- How to check if directory is empty in Java
- You might also like.
- Check if a directory is not empty in Java
- Example
- Output
- Java: проверка, пуст ли файл или каталог
- Проверьте, является ли файл пустым в Java
- Использование File.length()
- Использование BufferedReader
- Проверка, пуст ли каталог в Java
- Использование File.list()
- Использование DirectoryStream
- Вывод
How to check if a directory is empty in java?
When working with directories in Java, it is sometimes necessary to determine if a directory is empty. This can be useful in a number of scenarios, such as when you want to delete a directory, move a directory, or perform some other operation on the directory. In this article, we’ll look at several methods for checking if a directory is empty in Java.
Method 1: Using listFiles() method
To check if a directory is empty in Java using the listFiles() method, you can follow these steps:
- First, create a File object representing the directory you want to check.
- Then, call the listFiles() method on this object, which returns an array of File objects representing the files and directories contained in the directory.
- Check if the length of the array is zero. If it is, the directory is empty.
import java.io.File; public class CheckDirectoryIsEmpty public static void main(String[] args) // create a File object representing the directory to check File directory = new File("path/to/directory"); // get the array of File objects representing the files and directories in the directory File[] files = directory.listFiles(); // check if the length of the array is zero if (files.length == 0) System.out.println("Directory is empty"); > else System.out.println("Directory is not empty"); > > >
In this example, replace «path/to/directory» with the actual path to the directory you want to check.
Note that the listFiles() method can return null if there is an error accessing the directory, so you should also check for null before checking the length of the array:
if (files == null || files.length == 0) System.out.println("Directory is empty"); > else System.out.println("Directory is not empty"); >
Also note that the listFiles() method only returns the files and directories directly contained in the directory, not any files or directories contained in subdirectories. If you want to check if a directory and all its subdirectories are empty, you will need to recursively check each subdirectory.
Method 2: Using the DirectoryStream class
To check if a directory is empty in Java using the DirectoryStream class, you can follow these steps:
import java.nio.file.DirectoryStream; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths;
Path directoryPath = Paths.get("path/to/directory");
try (DirectoryStreamPath> directoryStream = Files.newDirectoryStream(directoryPath)) // code to check if directory is empty > catch (IOException e) // handle exception >
if (directoryStream.isEmpty()) System.out.println("Directory is empty"); > else System.out.println("Directory is not empty"); >
Putting it all together, here’s the complete code example:
import java.nio.file.DirectoryStream; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.io.IOException; public class CheckDirectoryEmpty public static void main(String[] args) Path directoryPath = Paths.get("path/to/directory"); try (DirectoryStreamPath> directoryStream = Files.newDirectoryStream(directoryPath)) if (directoryStream.isEmpty()) System.out.println("Directory is empty"); > else System.out.println("Directory is not empty"); > > catch (IOException e) System.err.println(e); > > >
This code will output «Directory is empty» if the directory is empty, and «Directory is not empty» if it contains any files or subdirectories.
Method 3: Using Apache Commons IO Library
To check if a directory is empty in Java using Apache Commons IO Library, you can use the FileUtils class. Here are the steps:
import org.apache.commons.io.FileUtils; import java.io.File;
File directory = new File("/path/to/directory");
boolean isEmpty = FileUtils.listFiles(directory, null, false).isEmpty();
The listFiles() method returns a list of files in the directory. If the list is empty, the directory is empty.
Here is the complete code example:
import org.apache.commons.io.FileUtils; import java.io.File; public class CheckDirectoryIsEmpty public static void main(String[] args) File directory = new File("/path/to/directory"); boolean isEmpty = FileUtils.listFiles(directory, null, false).isEmpty(); System.out.println("Is directory empty? " + isEmpty); > >
This code will print «Is directory empty? true» if the directory is empty, and «Is directory empty? false» if it is not empty.
How to Check if a Directory is Empty in Java
Learn to check if a directory is empty, or contains any files, in Java using NIO APIs.
The Files.list(dirPath) returns a lazily populated Stream of files and directories (non-recursive) in a given path. We can use the stream.findAny() method that returns an empty Optional if the directory is empty.
- If the specified path is not a directory then NotDirectoryException is thrown.
- The directory is closed by closing the stream.
This findAny() short-circuiting terminal operation that can conclude the result after selecting any element in the stream, so it does not need to look into the whole directory and its files before making a decision. It makes this approach a good solution with efficient performance for even the very large directories.
Path dirPath = Paths.get("C:/temp"); boolean isEmptyDirectory = Files.list(dirPath).findAny().isPresent();
A directory stream allows for the convenient use of the for-each construct to iterate over a directory.
A DirectoryStream is opened upon creation and is closed by invoking the close() method. Alternatively, we should use the try-with-resources statement that automatically closes the stream after use.
By using the iterator of the directory stream, we can call it’s hasNext() that checks if there is any file/directory element in the stream. If the directory is empty then hasNext() will return false .
Path dirPath = Paths.get("C:/temp"); boolean isEmptyDirectory = false; if (Files.isDirectory(dirPath)) < try (DirectoryStreamdirStream = Files.newDirectoryStream(dirPath)) < isEmptyDirectory = !dirStream.iterator().hasNext(); >>
In this Java tutorial, we learned a few performance-proven methods to check if a given directory is empty or not. We are using the stream’s laziness behavior to improve the performance that otherwise is sometimes a very expensive operation in the case of large folders.
How to check if directory is empty in Java
In Java, there are multiple ways to check if a directory is empty or not. If you are using Java 7 or higher, you can use Files.list() method to check if a directory is empty:
try // directory path Path path = Paths.get("dir"); // check if directory is empty if (Files.isDirectory(path)) if (!Files.list(path).findAny().isPresent()) System.out.println("Dirctory is empty!"); > else System.out.println("Dirctory is not empty!"); > > else System.out.println("Not a directory!"); > > catch (IOException ex) ex.printStackTrace(); >
Alternatively, you can also use File.list() from legacy I/O package to verify if a directory contains files or not as shown below:
// directory path File file = new File("dir"); // check if directory is empty if (file.isDirectory()) String[] list = file.list(); if (list == null || list.length == 0) System.out.println("Dirctory is empty!"); > else System.out.println("Dirctory is not empty!"); > > else System.out.println("Not a directory!"); >
✌️ Like this article? Follow me on Twitter and LinkedIn. You can also subscribe to RSS Feed.
You might also like.
Check if a directory is not empty in Java
The method java.io.File.list() is used to obtain the list of the files and directories in the specified directory defined by its path name. This list of files is stored in a string array. If the length of this string array is greater than 0, then the specified directory is not empty. Otherwise, it is empty.
A program that demonstrates this is given as follows −
Example
import java.io.File; public class Demo < public static void main(String[] args) < File directory = new File("C:\JavaProgram"); if (directory.isDirectory()) < String[] files = directory.list(); if (directory.length() >0) < System.out.println("The directory " + directory.getPath() + " is not empty"); >else < System.out.println("The directory " + directory.getPath() + " is empty"); >> > >
The output of the above program is as follows −
Output
The directory C:\JavaProgram is not empty
Now let us understand the above program.
The method java.io.File.list() is used to obtain the list of the files and directories in the directory «C:\JavaProgram». Then this list of files is stored in a string array files[]. If the length of this string array is greater than 0, then the specified directory is not empty is this is printed. Otherwise, it is empty is that is printed. A code snippet that demonstrates this is given as follows −
File directory = new File("C:\JavaProgram"); if (directory.isDirectory()) < String[] files = directory.list(); if (directory.length() >0) < System.out.println("The directory " + directory.getPath() + " is not empty"); >else < System.out.println("The directory " + directory.getPath() + " is empty"); >>
Learning faster. Every day.
Java: проверка, пуст ли файл или каталог
В Java работа с файлами и каталогами довольно распространена. Нас также часто интересует содержимое этих файлов и каталогов.
В зависимости от содержимого файла мы можем вести себя по-другому. Возможно, мы записываем некоторые данные в файл и сначала хотим проверить, содержит ли он уже некоторую информацию, прежде чем перезаписывать ее. Точно так же мы могли бы захотеть удалить каталог, если он пуст. Знание того, пуст он или нет, в таких случаях может иметь жизненно важное значение.
В этом руководстве мы рассмотрим несколько примеров того, как проверить, пуст ли файл или каталог в Java.
Проверьте, является ли файл пустым в Java
Есть два способа проверить пуст ли File .
Мы будем работать с двумя файлами, одним пустым и одним непустым:
09/17/2020 01:00 PM 0 file 09/17/2020 01:00 PM 2 file2
file — 0 байт, а длина file2 — 2 байта.
Стоит отметить, что перед выполнением каких-либо операций с файлом или каталогом вы должны проверить, существует ли файл или каталог, а также их тип, чтобы избежать запуска неправильных методов.
Использование File.length()
Согласно документации, объект File представляет собой «абстрактное представление путей к файлам и каталогам». У каждого объекта File есть методы для получения информации об этом конкретном файле.
Давайте продолжим и создадим простой вспомогательный метод, который возвращает true , если длина File равна, 0 и false если это не так:
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)
Объявление метода остается таким же, как и раньше: он принимает File и возвращает boolean . Хотя на этот раз мы создали экземпляр BufferedReader и предоставили ему, FileReader который принимает наши File . Это немного сложнее, чем раньше, но также хорошо выполняет свою работу.
Затем, если 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 есть удобный метод для сбора всех файлов и каталогов (записей , то есть файлов и каталогов) внутри заданного каталога. Мы можем использовать этот метод, чтобы проверить, равно ли количество таких записей нулю:
public boolean isDirectoryEmpty(File directory)
Метод возвращает массив имен записей. Если значение этого массива length равно 0 , каталог пуст.
Давайте запустим это в пустом и не пустом каталоге:
File directory1 = new File("/empty_directory"); File directory2 = new File("/directory"); System.out.println(isDirectoryEmpty(directory1)); System.out.println(isDirectoryEmpty(directory1));
Использование DirectoryStream
Еще одна быстрая, хотя и более продвинутая методика предполагает использование потоков. Сначала мы создаем новый DirectoryStream , вызывая класс Files.newDirectoryStream() . Этот метод принимает Path , поэтому нам нужно преобразовать наш File в Path , вызвав метод 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() и создав файл DirectoryStream .