我通过使用传递完整文件路径的不同方法获得不同大小的文件。
方法1:在这个方法中我使用了File(File parent,String child)方法。
package udacity;
import java.util.Scanner;
import java.io.File;
public class fileandmethods {
public static void main(String[] args)
{
File name= new File("E:/");
File filename= new File(name,"go.txt");
String alpha= filename.getName();
String alpha1= filename.getParent();
System.out.println(name.length());
System.out.println(alpha);
System.out.println(alpha1);
}}
输出:
4096
go.txt
E:\
方法2:在此我使用方法File(String pathname)传递了文件的抽象路径。
package udacity;
import java.util.Scanner;
import java.io.File;
public class fileandmethods {
public static void main(String[] args)
{
File filename= new File("E:/go.txt");
File name= new File("E:/go.txt");
String alpha= filename.getName();
String alpha1= filename.getParent();
System.out.println(name.length());
System.out.println(alpha);
System.out.println(alpha1);
}}
OUTPUT2:
4
go.txt
E:\
任何人都可以告诉我原因。实际大小为4。
答案 0 :(得分:4)
我的猜测是,当你以这种方式创建文件时:
File name= new File("E:/");
您在File
驱动器的根目录周围包裹了E:
。但是,当你这样做时:
File name= new File("E:/go.txt");
你在一个4字节的文件周围包裹了File
。
来自File#length()
的Javadoc:
返回此抽象路径名表示的文件的长度。如果此路径名表示目录,则返回值未指定。
因此,您看到的文件的4字节大小似乎是准确的,但E:/
的大小是"未指定,"意思是我们不能依赖这个价值。