From 3144b1978df734b3abbaf4bc6d4f7bcb6316d24d Mon Sep 17 00:00:00 2001 From: Super Oleg Date: Fri, 7 Feb 2020 18:43:29 +0300 Subject: [PATCH 1/3] Stream example added --- src/Main.java | 32 ++++++++++---------------------- 1 file changed, 10 insertions(+), 22 deletions(-) diff --git a/src/Main.java b/src/Main.java index 8fd829d..7ebe827 100644 --- a/src/Main.java +++ b/src/Main.java @@ -1,4 +1,7 @@ import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; public class Main { public static void main(String[] args) { @@ -6,30 +9,15 @@ public static void main(String[] args) { File dir = new File("C:/AmericasCardroom"); try { System.out.printf("Общий размер директории и вложенных файлов: %d байт", getDirSize(dir)); - } catch (IllegalArgumentException iAE) { - System.out.println(iAE.getMessage()); + } catch (Exception ex) { + System.out.println(ex.getMessage()); } } - static long getDirSize(File dir) throws IllegalArgumentException { - long size = 0; - if (dir == null) { - throw new IllegalArgumentException("Директория пуста"); - } - if (dir.isFile()) { - size = dir.length(); - } else { - File[] subFiles = dir.listFiles(); - if (subFiles != null) { - for (File file : subFiles) { - if (file.isFile()) { - size += file.length(); - } else { - size += getDirSize(file); - } - } - } - } - return size; + static long getDirSize(File dir) throws IOException { + + return Files.walk(dir.toPath()).map(Path::toFile) + .filter(file -> file.isFile() & !Files.isSymbolicLink(file.toPath())) + .map(File::length).reduce(Long::sum).get(); } } From 3b729562d75074a5fbf354f83eed7117e76a9651 Mon Sep 17 00:00:00 2001 From: Super Oleg Date: Mon, 10 Feb 2020 14:50:25 +0300 Subject: [PATCH 2/3] Some fixes added --- src/Main.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/Main.java b/src/Main.java index 7ebe827..be42f6d 100644 --- a/src/Main.java +++ b/src/Main.java @@ -8,7 +8,12 @@ public static void main(String[] args) { File dir = new File("C:/AmericasCardroom"); try { - System.out.printf("Общий размер директории и вложенных файлов: %d байт", getDirSize(dir)); + long bytes = getDirSize(dir); + float kB = (float) bytes/1024; + float mB = kB/1024; + float gB = mB/1024; + System.out.printf("Общий размер директории и вложенных файлов: " + + "%2$d байт\n%1$44s%3$.2f КБ\n%1$44s%4$.2f МБ\n%1$44s%5$.2f ГБ","", bytes,kB,mB,gB); } catch (Exception ex) { System.out.println(ex.getMessage()); } @@ -16,8 +21,11 @@ public static void main(String[] args) { static long getDirSize(File dir) throws IOException { - return Files.walk(dir.toPath()).map(Path::toFile) - .filter(file -> file.isFile() & !Files.isSymbolicLink(file.toPath())) - .map(File::length).reduce(Long::sum).get(); + return Files.walk(dir.toPath()) + .map(Path::toFile) + .filter(File::isFile) + .filter(file -> !Files.isSymbolicLink(file.toPath())) + .mapToLong(File::length) + .sum(); } } From c4c8393ea4407dd472d90d2be77f51761b4eac81 Mon Sep 17 00:00:00 2001 From: Super Oleg Date: Tue, 11 Feb 2020 15:15:00 +0300 Subject: [PATCH 3/3] getSizeToString added --- src/Main.java | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/src/Main.java b/src/Main.java index be42f6d..263aea7 100644 --- a/src/Main.java +++ b/src/Main.java @@ -2,21 +2,18 @@ import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; +import java.util.Locale; public class Main { public static void main(String[] args) { File dir = new File("C:/AmericasCardroom"); try { - long bytes = getDirSize(dir); - float kB = (float) bytes/1024; - float mB = kB/1024; - float gB = mB/1024; - System.out.printf("Общий размер директории и вложенных файлов: " + - "%2$d байт\n%1$44s%3$.2f КБ\n%1$44s%4$.2f МБ\n%1$44s%5$.2f ГБ","", bytes,kB,mB,gB); - } catch (Exception ex) { - System.out.println(ex.getMessage()); + System.out.println("Общий размер директории и вложенных файлов: " + getSizeToString(dir)); + } catch (IOException e) { + e.printStackTrace(); } + } static long getDirSize(File dir) throws IOException { @@ -28,4 +25,20 @@ static long getDirSize(File dir) throws IOException { .mapToLong(File::length) .sum(); } + + static String getSizeToString(File dir) throws IOException { + + long bytes = getDirSize(dir); + float kB = (float) bytes / 1024; + float mB = kB / 1024; + float gB = mB / 1024; + if (gB >= 1) { + return String.format(Locale.CANADA_FRENCH,"%.2f ГБ (%,d байт)",gB,bytes); + } else if (mB >= 1) { + return String.format(Locale.CANADA_FRENCH,"%.2f МБ (%,d байт)", mB, bytes); + } else if (kB >= 1) { + return String.format(Locale.CANADA_FRENCH,"%.2f КБ (%,d байт)", kB, bytes); + } + return String.format(Locale.CANADA_FRENCH,"%,d байт", bytes); + } }