JavaSE基础九----<IO流 >File类
Posted 小智RE0
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaSE基础九----<IO流 >File类相关的知识,希望对你有一定的参考价值。
什么是IO流
JavaIO流,是一种计算机用语。主要是用于处理数据的传输。
1.按流的方向分为:输入流和输出流
2.按流的数据单位不同分为:字节流和字符流
3.按流的功能不同分为:节点流和处理流
File类
位于java.io包中.
File类的对象可以表示文件,还可以表示目录,在程序中一个File类对象可以代表计算机一个的文件或目录;
File对象可以对文件或目录的属性进行操作,如:文件名、最后修改日期、文件大小等;
File对象无法操作文件的具体数据,即不能直接对文件进行读/写的操作。
构造方法
方法 | 注释 |
---|---|
File(File parent, String child) | 从父路径名和子路径名字符串创建新的 File实例。 |
File(String pathname) | 通过将给定的路径名字符串转换为路径名来创建新的 File实例。 |
File(String parent, String child) | 从父路径名字符串和子路径名字符串创建新的 File实例。 |
File(URI uri) | 通过将给定的 file: URI转换为路径名来创建新的 File实例。 |
前三种构造方法:
注意:这里的文件的路径可以用"/“反斜杠或者用”\\"双斜线;
File f1=new File(“F:/Demo01.txt”);
File f2=new File(“F:\\Demo02.md”);
//构造方法
//1.public File( String pathname);
//在指定的文件(目录)的路径创建文件对象;
//注意:这里的文件的路径可以用"/"反斜杠或者用"\\\\"双斜线;
//例如:在F盘创建Demo01,Demo02文件的对象;
File f1=new File("F:/Demo01.txt");
File f2=new File("F:\\\\Demo02.md");
//2.public File(String parent,String child);
//通过在给定的路径名字符串转换为路径名来创建新的 File实例。
//例如:在F盘创建Demo03文件的对象;
String s="F:\\\\";
File f3=new File(s,"Demo3.txt");
//3.public File( File parent,String child);
//在父路径名来对子路径名字符串创建新的 File实例。
File f4=new File("F:\\\\");
File f5=new File(f4,"Demo05.txt");
在创建对象时,不会检测文件是否存在
常用方法
(1)部分获取方法和判断方法.
方法 | 用法 |
---|---|
public long length( ) | 获取文件的长度(获取的是字节长度) |
public String getName( ) | 获取该文件的名字 |
public String getParent( ) | 获取该文件的上一级;(返回的是字符串形式) |
public File getParentFile( ) | 获取该文件的上一级(返回文件路径) |
public String getAbsolutePath( ) | 获取该相对路径文件的绝对路径字符串形式 |
public File getAbsoluteFile( ) | 获取该相对路径文件的绝对路径 |
public String getPath( ) | 获取文件的地址 |
public long lastModified( ) | 返回文件最后一次操作的时间;(long类型的) |
public boolean exists( ) | 判断文件是否存在; |
public boolean canRead( ) | 判断文件是否为可读 |
public boolean canWrite( ) | 判断文件是否为可写 |
public boolean canExecute( ) | 判断文件是否可被执行 |
public boolean isAbsolute( ) | 判断该创建对象的文件是否为绝对路径的 |
public boolean isDirectory( ) | 判断该文件是否为一个文件夹 |
public boolean isHidden( ) | 判断该文件是否为隐藏文件 |
关于相对路径和绝对路径;
- 绝对路径:是从盘符开始的路径,形如
C:\\windows\\system32\\cmd.exe- 相对路径:是从当前路径开始的路径,假如当前路径为C:\\windows
要描述上述路径,只需输入
system32\\cmd.exe- 实际上,严格的相对路径写法应为.\\system32\\cmd.exe
其中,.表示当前路径,在通道情况下可以省略,只有在特殊的情况下不能省略。
假如当前路径为c:\\program files
要调用上述命令,则需要输入
…\\windows\\system32\\cmd.exe
其中,…为父目录。
当前路径如果为c:\\program files\\common files
则需要输入
…\\windows\\system32\\cmd.exe
另外,还有一种不包含盘符的特殊绝对路径,形如
\\windows\\system32\\cmd.exe
无论当前路径是什么,会自动地从当前盘的根目录开始查找指定的程序。
(来自百度百科)
上面的(1)方法演示:
import java.io.File;
/**
* @create 2021-05-18 19:32
* File类的常用方法
*部分获取方法,判断方法;
*/
public class Demo02 {
public static void main(String[] args) {
File f=new File("F:/Demo1.txt");
//1.public long length();
//获取文件的长度(获取的是字节长度);
System.out.println(f.length());//16
//2.public String getName()
//获取该文件的名字;
System.out.println(f.getName());//Demo1.txt
//3.public String getParent();
//获取该文件的上一级;(返回的是字符串形式)
System.out.println(f.getParent());// F:\\
//4.public String getAbsolutePath()
//获取该相对路径文件的绝对路径字符串;
System.out.println(f.getAbsolutePath());// F:\\Demo1.txt
//5.public String getPath()
//获取文件的地址;
System.out.println(f.getPath());//F:\\Demo1.txt
//6.public long lastModified( )
//返回文件最后一次操作的时间;(long类型的)
System.out.println(f.lastModified());//1621334347878
//7.public boolean exists( );
//判断文件是否存在;
System.out.println(f.exists());//true
//8.public boolean canRead()
//判断文件是否为可读;
System.out.println(f.canRead());//true
//9.public boolean canWrite()
//判断文件是否为可写;
System.out.println(f.canWrite());//true
//10.public boolean canExecute();
//判断文件是否可被执行;
System.out.println(f.canExecute());//true
//11.public boolean isAbsolute( )
//判断该创建对象的文件是否为绝对路径的;
System.out.println(f.isAbsolute());//true
//12.public boolean isDirectory( )
//判断该文件是否为一个文件夹;
System.out.println(f.isDirectory());//false
//13.public boolean isHidden( )
//判断该文件是否为隐藏文件;
System.out.println(f.isHidden());//false
}
}
(2)其他方法.
方法 | 用法 |
---|---|
public boolean createNewFile( ) | 判断文件是否存在;文件不存在就创建一个,返回true;若文件已存在,则返回false;(由于会有文件不存在的状况,所以调用这个方法时,需要捕获异常或者抛出异常. |
public boolean delete( ) | 判断是否删除文件;若文件不存在,则返回false;若文件存在,删除文件且返回true ;在删除文件夹时,文件夹必须为空 |
- public boolean mkdir( )
创建由此抽象路径名命名的目录(文件夹);只能创建单级的文件夹;
若文件夹已经存在,则返回false;若不存在则创建且返回true.
//执行一次创建一次;
File f3=new File("F:/RE01/RE02");
System.out.println(f3.mkdir());
- public boolean mkdirs( )
创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录;
可以创建多级文件夹.
若文件夹已经存在,则返回false;若不存在则创建且返回true;
一次执行直接创建;
//一次执行直接创建;
File f4=new File("F:/RES1/RES2");
System.out.println(f4.mkdirs());
- public String[ ] list( )
获取指定目录下的所有子级文件(目录)名;
以字符串数组形式返回文件(目录)名.
//5.public String[] list( )
//获取指定目录下的所有子级文件(目录)名;
File f5=new File("F:/JAVAIO流练习使用的文件夹");
String[] s=f5.list();
//遍历
for (String s1:s) {
System.out.println(s1);
}
- public String[ ] list(FilenameFilter filter)
返回一个字符串数组,返回由此抽象路径名表示的目录中满足指定过滤器的文件(目录)名。
即可以添加筛选条件,来获取文件(目录)名
public String[] list(FilenameFilter filter);
//返回一个字符串数组,返回由此抽象路径名表示的目录中满足指定过滤器的文件(目录)名。
String [] string=f5.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
//指定返回以docx结尾的文件;
return name.endsWith("docx");
}
});
for (String s2:string) {
System.out.println(s2);
}
- public File[ ] listFiles( )
返回一个抽象路径名数组,表示由该抽象路径名表示的目录中的文件。
File f5=new File("F:/JAVAIO流练习使用的文件夹");
//7.public File[] listFiles( )
//返回一个抽象路径名数组,表示由该抽象路径名表示的目录中的文件。
File[] files0=f5.listFiles();
for (File file:files0) {
System.out.println(file);
}
- public File[] listFiles(FilenameFilter filter)
返回一个抽象路径名数组,表示由此抽象路径名表示的满足指定过滤器的目录中的文件和目录。
File f5=new File("F:/JAVAIO流练习使用的文件夹");
//8.public File[] listFiles(FilenameFilter filter);
//返回一个抽象路径名数组,表示由此抽象路径名表示的满足指定过滤器的目录中的文件和目录。
File[] files1=f5.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
//指定返回以docx结尾的文件;
return name.endsWith("docx");
}
});
for (File file:files1) {
System.out.println(file);
}
方法 | 用法 |
---|---|
public boolean renameTo(File dest) | 指定文件重命名;dest:更改后的文件名 |
public static File[] listRoots() | 列出可用的文件系统根目录 |
public int compareTo(File pathname) | 如果参数等于此抽象路径名,则为零,如果此抽象路径名在字典上小于参数,则小于零的值,或者如果此抽象路径名在词法上大于参数,则该值大于零 ;如果文件名字符串的首字母相同,则返回两个字符串的长度差值。否则返回两个字符串首字母的小写字母的ASCII码的差值 |
public boolean equals(Object obj) | 判断此抽象路径名与给定对象的相等性。当且仅当对象相同时为true;否则false |
public boolean setReadable(boolean readable) | 一种方便的方法来设置所有者对此抽象路径名的读取权限 |
public boolean setReadable(boolean readable,boolean ownerOnly) | 设置此抽象路径名的所有者或私有的读取权限。 readable - 如果为 true,则设置允许读操作的访问权限;如果为 false,则不允许读操作。owneronly - 如果为 true,则读权限只适用于所有者的读权限;否则适用于所有用户。如果底层文件系统不能区分所有者读权限与其他读权限,那么无论该参数为何值,读权限将适用于所有用户。 ;返回值:;当且仅当操作成功时返回 true。如果用户不具有更改此抽象路径名访问权限的权限,那么操作将失败。如果 readable 为 false,并且底层文件系统不实现读权限,那么操作也将失败。 |
public boolean setReadOnly( ) | 设置文件为只读 |
public boolean setWritable(boolean writable) | 设置文件为可写 |
public boolean setWritable(boolean writable,boolean ownerOnly) | 设置此抽象路径名的所有者或每个人的写入权限 |
public java.nio.file.Path toPath( ) | 返回从此抽象路径构造的java.nio.file.Path对象 |
public String toString() | 返回此抽象路径名的路径名字符串 |
public java.net.URI toURI() | 构造一个表示此抽象路径名的 file: URI |
以上是关于JavaSE基础九----<IO流 >File类的主要内容,如果未能解决你的问题,请参考以下文章
JavaSE基础九----<IO流 >流的体系和分类,字节流,字节缓冲流
JavaSE基础九---<IO流 >print打印流,对象输入输出流,对象序列化,transient关键字