Java get file size

Filed Under: Java

Today we will look into different ways to get file size in Java.

Java get file size

There are different classes that we can use for java get file size program. Some of them are;

  1. Java get file size using File class
  2. Get file size in java using FileChannel class
  3. Java get file size using Apache Commons IO FileUtils class

Before we look into an example program to get file size, we have a sample pdf file with size 2969575 bytes.

java file size, java get file size

Java get file size using File class

Java File length() method returns the file size in bytes. The return value is unspecified if this file denotes a directory. So before calling this method to get file size in java, make sure file exists and it’s not a directory.

Below is a simple java get file size example program using File class.


package com.journaldev.getfilesize;

import java.io.File;

public class JavaGetFileSize {

	static final String FILE_NAME = "/Users/pankaj/Downloads/file.pdf";

	public static void main(String[] args) {
		File file = new File(FILE_NAME);
		if (!file.exists() || !file.isFile()) return;

		System.out.println(getFileSizeBytes(file));
		System.out.println(getFileSizeKiloBytes(file));
		System.out.println(getFileSizeMegaBytes(file));
	}

	private static String getFileSizeMegaBytes(File file) {
		return (double) file.length() / (1024 * 1024) + " mb";
	}
	
	private static String getFileSizeKiloBytes(File file) {
		return (double) file.length() / 1024 + "  kb";
	}

	private static String getFileSizeBytes(File file) {
		return file.length() + " bytes";
	}
}

java get file size

Get file size in java using FileChannel class

We can use FileChannel size() method to get file size in bytes.


package com.journaldev.getfilesize;

import java.io.IOException;
import java.nio.channels.FileChannel;
import java.nio.file.Path;
import java.nio.file.Paths;

public class JavaGetFileSizeUsingFileChannel {

	static final String FILE_NAME = "/Users/pankaj/Downloads/file.pdf";

	public static void main(String[] args) {

		Path filePath = Paths.get(FILE_NAME);
		FileChannel fileChannel;
		try {
			fileChannel = FileChannel.open(filePath);
			long fileSize = fileChannel.size();
			System.out.println(fileSize + " bytes");
			fileChannel.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

Java get file size using Apache Commons IO FileUtils class

If you are already using Apache Commons IO in your project, then you can use FileUtils sizeOf method to get file size in java.


package com.journaldev.getfilesize;

import java.io.File;

import org.apache.commons.io.FileUtils;

public class JavaGetFileSizeUsingApacheCommonsIO {

	static final String FILE_NAME = "/Users/pankaj/Downloads/file.pdf";

	public static void main(String[] args) {
		File file = new File(FILE_NAME);

		long fileSize = FileUtils.sizeOf(file);

		System.out.println(fileSize + " bytes");
	}
}

That’s all for java get file size programs.

You can checkout more Java IO examples from our GitHub Repository.

Comments

  1. Arjan says:

    About File vs FileUtils vs FileChannel: Is there any reason to choose one above the other or is it just that people choose whatever they like?

  2. test1234 says:

    Iam sending pdf filename to java through ajax call.While saving that filename in a folder it showing only filename content is not displaying.

    1. Pankaj says:

      Check if file is getting transferred completely from client to server or not. Then check if you are flushing the output to file or not.

Leave a Reply

Your email address will not be published. Required fields are marked *

close
Generic selectors
Exact matches only
Search in title
Search in content
Search in posts
Search in pages