我很難將目錄傳遞給下面的代碼。當系統提示我輸入目錄時,我會執行如下所示的操作:C:\Users。我得到一個 0 位元組的輸出,這是不準確的。這意味著程式沒有注冊鍵入的目錄。
代碼:
//import jdk.internal.icu.text.UnicodeSet;
import java.io.File;
import java.util.Scanner;
import java.util.Queue;
import java.util.LinkedList;
public class Hwk2018
{
public static void main(String[] args)
{
//String s = "C:\\Users\\
//File filess = new File(s);
System.out.println("Enter a directory or a file: ");
Scanner input = new Scanner(System.in);
String directory = input.nextLine();
Hwk2018 obj = new Hwk2018();
System.out.println(obj.getSize(new File(directory)) " bytes");
}
int i = 0;
Queue<File> que = new LinkedList<>();
public long getSSize(File directory)
{
long size = 0;
que.add(directory);
while(!que.isEmpty())
{
File t = que.poll();
if(!t.isDirectory())
{
size = t.length();
}
else
{
//for(int i = 0; )
que.add(directory);
}
}
return size;
}
public static long getSize(File file)
{
long size = 0;
if (file.isDirectory()) {
File[] files = file.listFiles();
for (int i = 0; files != null && i < files.length; i ) {
size = getSize(files[i]);
}
} else {
size = file.length();
}
return size;
}
}
在終端上運行“MBP src % java Hwk2018”并隨后鍵入 C:\Users 時的輸出:
0 bytes
預期輸出:
87 bytes (or some numerical value other than 0)
uj5u.com熱心網友回復:
我會File#exists用來驗證用戶輸入是一個有效的路徑,你也可以添加File#isDirectory檢查,但由于getSize這樣做,它可能不是必需的。
隨后鍵入 C:\Users: 我使用的是 Mac
Mac沒有像windows那樣的“驅動器”概念,它們有“卷”,因此它可能應該是/Users,但您可能會遇到其他問題,因為您沒有其他用戶的讀取權限。
以下將列印您的“主”目錄的路徑,并用于File#exist驗證用戶輸入
import java.io.File;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
//String s = "C:\\Users\\
//File filess = new File(s);
String directory = System.getProperty("user.home");
System.out.println("Your home directory is [" directory "]");
System.out.println("Enter a directory or a file: ");
Scanner input = new Scanner(System.in);
directory = input.nextLine();
File parent = new File(directory);
if (parent.exists()) {
Main obj = new Main();
System.out.println(obj.getSize(new File(directory)) " bytes");
} else {
System.out.println(directory " is not a valid directory");
}
}
public static long getSize(File file) {
long size = 0;
System.out.println("Scanning " file.getName());
if (file.isDirectory()) {
File[] files = file.listFiles();
for (int i = 0; files != null && i < files.length; i ) {
size = getSize(files[i]);
}
} else {
size = file.length();
}
return size;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/430402.html
