Saiz Fail di Java

1. Gambaran keseluruhan

Dalam tutorial cepat ini, kita akan belajar bagaimana mendapatkan ukuran file di Java - menggunakan Java 7, Java 8 dan Apache Common IO baru.

Akhirnya - kami juga akan mendapat gambaran ukuran fail yang dapat dibaca oleh manusia.

2. Standard Java IO

Mari kita mulakan dengan contoh mudah untuk mengira saiz fail - menggunakan kaedah File.length () :

private long getFileSize(File file) { long length = file.length(); return length; }

Kami dapat menguji pelaksanaan kami secara sederhana:

@Test public void whenGetFileSize_thenCorrect() { long expectedSize = 12607; File imageFile = new File("src/test/resources/image.jpg"); long size = getFileSize(imageFile); assertEquals(expectedSize, size); }

Perhatikan bahawa, secara lalai, ukuran fail dikira dalam bait.

3. Dengan Java NIO

Seterusnya - mari kita lihat bagaimana menggunakan pustaka NIO untuk mendapatkan ukuran fail.

Dalam contoh berikut, kami akan menggunakan API FileChannel.size () untuk mendapatkan ukuran fail dalam bait:

@Test public void whenGetFileSizeUsingNioApi_thenCorrect() throws IOException { long expectedSize = 12607; Path imageFilePath = Paths.get("src/test/resources/image.jpg"); FileChannel imageFileChannel = FileChannel.open(imageFilePath); long imageFileSize = imageFileChannel.size(); assertEquals(expectedSize, imageFileSize); } 

4. Dengan Apache Commons IO

Seterusnya - mari kita lihat cara mendapatkan ukuran fail menggunakan Apache Commons IO . Dalam contoh berikut - kita hanya menggunakan FileUtils.sizeOf () untuk mendapatkan ukuran fail:

@Test public void whenGetFileSizeUsingApacheCommonsIO_thenCorrect() { long expectedSize = 12607; File imageFile = new File("src/test/resources/image.jpg"); long size = FileUtils.sizeOf(imageFile); assertEquals(expectedSize, size); }

Perhatikan bahawa, untuk fail yang dilindungi keselamatan, FileUtils.sizeOf () akan melaporkan ukurannya sebagai sifar.

5. Saiz Bacaan Manusia

Akhirnya - mari kita lihat bagaimana mendapatkan perwakilan yang lebih mudah dibaca pengguna mengenai ukuran fail menggunakan Apache Commons IO - bukan hanya ukuran dalam bait:

@Test public void whenGetReadableFileSize_thenCorrect() { File imageFile = new File("src/test/resources/image.jpg"); long size = getFileSize(imageFile); assertEquals("12 KB", FileUtils.byteCountToDisplaySize(size)); } 

6. Kesimpulannya

Dalam tutorial ini, kami menggambarkan contoh penggunaan Java dan Apache Commons IO untuk mengira ukuran fail dalam sistem fail.

Pelaksanaan contoh-contoh ini dapat dijumpai dalam projek GitHub - ini adalah projek berasaskan Maven, jadi mudah untuk diimport dan dijalankan sebagaimana adanya.