File类中getAbsolutePath、getPath、getName、length普通方法用法示例
总概述:
String getAbsolutePath() 返回此抽象路径名的绝对路径名字符串。
String getPath() 将此抽象路径名转换为路径名字符串。
String getName() 返回由此抽象路径名表示的文件或目录的名称。
long length() 返回由此抽象路径名表示的文件的长度。
抽象路径名====File文件
在理解什么是抽象路径名的时候,简单理解为File文件即可
package com.baidu;
import java.io.File;
/*
总概述:
String getAbsolutePath() 返回此抽象路径名的绝对路径名字符串。
String getPath() 将此抽象路径名转换为路径名字符串。
String getName() 返回由此抽象路径名表示的文件或目录的名称。
long length() 返回由此抽象路径名表示的文件的长度。
抽象路径名====File文件
*/
public class Test03File {
public static void main(String[] args) {
show01();
show02();
show03();
show04();
}
private static void show01(){
System.out.println("======第一部分getAbsolutePath=====");
/*
show01部分主要讲解getAbsolutePath
官方用法:
String getAbsolutePath() 返回此抽象路径名的绝对路径名字符串。
*/
//尝试获取f1构造方法里f1的绝对路径,OK
File f1 = new File("F:\\acan\\IdeaProjects\\a.txt");
String absolutePath1 = f1.getAbsolutePath();
System.out.println(absolutePath1);
System.out.println("============华丽的分割线=============");
//尝试获取f1构造方法中f1的相对
String path1 = f1.getPath();
System.out.println(path1);
System.out.println("===========");
System.out.println("f1输出的内容为:"+f1);
/*
toString方法就是掉用的getPath方法
源码:
public String toString() {
return getPath();
}
*/
System.out.println("f1.toString方法本质就是掉用getPath方法:"+f1.toString());
}
private static void show02(){
System.out.println("=====第二部分getPath====");
/*
show02主要讲解getPath方法
String getPath() 将此抽象路径名转换为路径名字符串。
*/
File f2 = new File("a.txt");
String absolutePath2 = f2.getAbsolutePath();
System.out.println(absolutePath2);//相对于当前项目的路径,当前项目的路径在F:\acan\IdeaProjects\hadoopdaima
System.out.println("=========华丽的分割线==========");
//尝试获取f2构造方法中的相对路径文件
String path1 = f2.getPath();
System.out.println(path1);
}
private static void show03(){
System.out.println("====第三部分getName=====");
/*
show03方法主要讲解getName方法
getName方法官方用法如下
String getName() 返回由此抽象路径名表示的文件或目录的名称。
结尾要么是文件,要么是文件夹
*/
File f3 = new File("F:\\acan\\IdeaProjects\\a.txt");
String name1 = f3.getName();
/*
getName源码
public String getName() {
int index = path.lastIndexOf(separatorChar);
if (index < prefixLength) return path.substring(prefixLength);
return path.substring(index + 1);
}
*/
System.out.println("name1返回的结果:"+name1);
File f4 = new File("F:\\acan\\IdeaProjects");
String name2 = f4.getName();
System.out.println("name2的返回结果:"+name2);
}
private static void show04(){
System.out.println("====第四部分length=====");
/*
show04部分主要讲解 length方法
length方法的官方用法如下:
long length() 返回由此抽象路径名表示的文件的长度。
获取的是构造方法指定的大小,以字节为单位的
注意:
文件夹是没有大小概念的
如果构造方法中给出的路径不存在,那么length方法返回0
*/
File f5 = new File("F:\\develop\\a\\a.txt");
long length1 = f5.length();
System.out.println("a.txt文件的大小:"+length1);//以字节为单位
File f6 = new File("F:\\develop\\a\\1.jpg");
long length2 = f6.length();
System.out.println("1.jpg文件的大小:"+length2);
File f7 = new File("F:\\develop\\a\\2.jpg");
long length3 = f7.length();
System.out.println("来看一下2.jpg(我电脑里没有)返回的结果是:"+length3);
File f8 = new File("F:\\develop\\a\\");
long length4 = f8.length();
System.out.println("文件夹的大小:"+length4);
}
}
程序运行结果:
======第一部分getAbsolutePath=====
F:\acan\IdeaProjects\a.txt
============华丽的分割线=============
F:\acan\IdeaProjects\a.txt
===========
f1输出的内容为:F:\acan\IdeaProjects\a.txt
f1.toString方法本质就是掉用getPath方法:F:\acan\IdeaProjects\a.txt
=====第二部分getPath====
F:\acan\IdeaProjects\hadoopdaima\a.txt
=========华丽的分割线==========
a.txt
====第三部分getName=====
name1返回的结果:a.txt
name2的返回结果:IdeaProjects
====第四部分length=====
a.txt文件的大小:15
1.jpg文件的大小:236600
来看一下2.jpg(我电脑里没有)返回的结果是:0
文件夹的大小:0
File类中的普通方法有很多,这里仅仅是最常用到的4个
附录:
值得注意的是,文件夹是没有大小概念的,虽然在文件夹属性可以看到大小,但是那个大小是文件夹里面内容的总大小
没有大小概念就会返回0,构造方法中路径位置不存在,length方法也是会返回为0的
f1.toString方法其实本质上就是掉用了getPath的方法
直接打印f1就是打印了File构造方法中的传参的值
=================华丽的分割线=================
前几天课堂上,老师说起了new 标识符,一来一回的问答中,我想总结一下
大概和File file = new File();差不多的,那个是aspx文件格式的,new是来实例化对象的,继而去开辟一个空间
new后面跟着的是构造方法,构造方法的特点是构造方法的名称要和所在类的名称一致,构造方法没有返回值类型
构造方法有也可以传参,传参后调用的有参的构造方法
看一下Java中声明并实例化File类的时候,File构造方法写了些啥
public File(String pathname) {
if (pathname == null) {
throw new NullPointerException();
}
this.path = fs.normalize(pathname);
this.prefixLength = fs.prefixLength(this.path);
}