Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitcda8701

Browse files
author
jsquared21
committed
Add Ex 20.18
1 parent653e6b3 commitcda8701

File tree

2 files changed

+47
-0
lines changed

2 files changed

+47
-0
lines changed
1.58 KB
Binary file not shown.
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
/*********************************************************************************
2+
* (Directory size) Listing 20.7, DirectorySize.java, gives a recursive method *
3+
* for finding a directory size. Rewrite this method without using recursion. *
4+
* Your program should use a queue to store the subdirectories under a directory. *
5+
*********************************************************************************/
6+
importjava.io.File;
7+
importjava.util.*;
8+
9+
publicclassExercise_20_18 {
10+
publicstaticvoidmain(String[]args) {
11+
// Prompt the user to enter a directory or a file
12+
System.out.print("Enter a directory or a file: ");
13+
Scannerinput =newScanner(System.in);
14+
Stringdirectory =input.nextLine();
15+
16+
// Display the size
17+
System.out.println(getSize(newFile(directory)) +" bytes");
18+
}
19+
20+
/** Returns the size of a directory */
21+
publicstaticlonggetSize(Filefile) {
22+
// Create a Queue
23+
Queue<File>queue =newLinkedList<>();
24+
longsize =0;// Accumulates the directory size
25+
26+
addDirectory(queue,file);
27+
28+
while (!queue.isEmpty()) {
29+
// Remove an item form the queue into t
30+
Filet =queue.remove();
31+
if (t.isFile())
32+
size +=t.length();
33+
else// Add all files and subdirectories under t into the queue
34+
addDirectory(queue,t);
35+
}
36+
37+
returnsize;
38+
}
39+
40+
/** Adds a Directory to the queue */
41+
privatestaticvoidaddDirectory(
42+
Queue<File>queue,Filedirectory) {
43+
for (Filefile:directory.listFiles()) {
44+
queue.offer(file);
45+
};
46+
}
47+
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp