BAEL-7092: How to get the size of a file in MB, KB & GB in java (#15117)

* BAEL-7092: How to get the size of a file in MB, KB & GB in java

* Update JavaFileSizeUnitTest.java

* BAEL-7092: How to get the size of a file in MB, KB & GB in java

---------

Co-authored-by: Grzegorz Piwowarek <gpiwowarek@gmail.com>
This commit is contained in:
ACHRAF TAITAI 2023-11-15 22:16:28 +01:00 committed by GitHub
parent 1a555cd9a7
commit 0838279c6a
2 changed files with 54 additions and 5 deletions

View File

@ -0,0 +1,28 @@
package com.baeldung.size;
import java.io.File;
public class FileSizeUtils {
public static long getFileSizeInBytes(File file) {
if (file.exists()) {
return file.length();
} else {
throw new IllegalArgumentException("File not found.");
}
}
public static double getFileSizeInKilobytes(File file) {
long bytes = getFileSizeInBytes(file);
return (double) bytes / 1024;
}
public static double getFileSizeInMegabytes(File file) {
double kilobytes = getFileSizeInKilobytes(file);
return kilobytes / 1024;
}
public static double getFileSizeInGigabytes(File file) {
double megabytes = getFileSizeInMegabytes(file);
return megabytes / 1024;
}
}

View File

@ -1,6 +1,8 @@
package com.baeldung.size; package com.baeldung.size;
import static org.junit.Assert.assertEquals; import org.apache.commons.io.FileUtils;
import org.junit.Before;
import org.junit.Test;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
@ -10,9 +12,9 @@ import java.net.URL;
import java.nio.channels.FileChannel; import java.nio.channels.FileChannel;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.Paths; import java.nio.file.Paths;
import org.apache.commons.io.FileUtils;
import org.junit.Before; import static org.junit.Assert.assertEquals;
import org.junit.Test; import static org.junit.Assert.fail;
public class JavaFileSizeUnitTest { public class JavaFileSizeUnitTest {
private static final long EXPECTED_FILE_SIZE_IN_BYTES = 11; private static final long EXPECTED_FILE_SIZE_IN_BYTES = 11;
@ -85,4 +87,23 @@ public class JavaFileSizeUnitTest {
assertEquals(EXPECTED_FILE_SIZE_IN_BYTES, stream.available()); assertEquals(EXPECTED_FILE_SIZE_IN_BYTES, stream.available());
} }
} }
}
@Test
public void whenGetFileSizeInDifferentUnits_thenCorrect(){
filePath = String.join(File.separator, new String[] { "src", "test", "resources", "size", "sample_file_1.in" });
File file = new File(filePath);
if (file.exists()) {
long expectedBytes = file.length();
double expectedKilobytes = (double) expectedBytes / 1024;
double expectedMegabytes = expectedKilobytes / 1024;
double expectedGigabytes = expectedMegabytes / 1024;
assertEquals(expectedBytes, FileSizeUtils.getFileSizeInBytes(file));
assertEquals(expectedKilobytes, FileSizeUtils.getFileSizeInKilobytes(file), 0.01);
assertEquals(expectedMegabytes, FileSizeUtils.getFileSizeInMegabytes(file), 0.01);
assertEquals(expectedGigabytes, FileSizeUtils.getFileSizeInGigabytes(file), 0.01);
} else {
fail("File not found.");
}
}
}