第15章_File类与IO流 1
1.File类的理解
- File类位于java.io包下,本章中涉及到的相关流也都声明在java.io包下。
- File类的一个对象,对应与操作系统下的一个文件或一个文件目录(或文件夹)
- File类中声明了新建、删除、获取名称、重命名等方法,并没有涉及到文件内容的读写操作。要想实现文件内容的读写,我们就需要使用io流。
- File类的对象,通常是作为io流操作的文件的端点出现的。
- 代码层面,将File类的对象作为参数传递到IO流相关类的构造器中。
1.2构造器
- public File(String pathname) : 以pathname为路径创建File对象,可以是绝对路径或者相对路径,如果pathname是相对路径,则默认的当前路径在系统属性user.dir中存储。
- public File(String parent,String child): 以parent为父路径,child为子路径创建File对象。
- public File(File parent,String child)︰根据一个父File对象和子文件路径创建File对象
/*
文件的路径表示方式:
方式1:绝对路径:以windows操作系统为例,包括盘符在内的文件或文件目录的完整路径。
方式2:相对路径:相对于某一个文件目录来讲的相对的位置。
在IDEA中,如果使用单元测试方法:相对于当前的module来讲
如果使用main(()方法:相对于当前的project来讲
*/
public void test1(){
//public File(String pathname)
File file1 = new File("d:/io/hello.txt");
File file2 = new File("abc");
System.out.println(file2.getAbsoluteFile());
}
//public File(String parent,String child)
public void test2(){
//参数1:一定是一个文件目录
//参数2:可以是一个文件,也可以是一个文件目录
File file = new File("d:\\io", "abc.txt");
File file1 = new File("abc", "a12");
// public File(File parent,String child)
//参数1:一定是一个文件目录
//参数2:可以是一个文件,也可以是一个文件目录
File file2 = new File(file1, "ab12");
}
1.3常用方法
1、获取文件和目录基本信息
- public String getName():获取名称
- public String getPath():获取路径
- public String getAbsolutePath():获取绝对路径.
- public File getAbsoluteFile():获取绝对路径表示的文件
- public String getParent():获取上层文件目录路径。若无,返回null
- public long length():获取文件长度(即:字节数)。不能获取目录的长度。
- public long lastModified():获取最后一次的修改时间,毫秒值
public void test3(){
File file = new File("hello.txt");
System.out.println(file.getName());//hello.txt
System.out.println(file.getPath());//hello.txt
System.out.println(file.getAbsolutePath());//F:\科技为你\Java\尚硅谷Java入门\code\JavaSE2\jichuyufa\hello.txt
System.out.println(file.getAbsoluteFile());//F:\科技为你\Java\尚硅谷Java入门\code\JavaSE2\jichuyufa\hello.txt
System.out.println(file.getParent());//null
System.out.println(file.getAbsoluteFile().getParent());//F:\科技为你\Java\尚硅谷Java入门\code\JavaSE2\jichuyufa
System.out.println(file.length());//0
System.out.println(file.lastModified());//0
}
2、列出目录的下一级
- public String] list()∶返回一个string数组,表示该File目录中的所有子文件或目录。
- public File[] listFiles():返回一个File数组,表示该File目录中的所有的子文件或目录
public void test4(){
File file = new File("F:\\科技为你\\Java\\尚硅谷Java入门");
String[] listArr = file.list();
for (String s : listArr) {
System.out.println(s);//code
}
System.out.println();
File[] files = file.listFiles();
for (File file1 : files) {
System.out.println(file1);//F:\科技为你\Java\尚硅谷Java入门\code
}
}
3、File类的重命名功能
public boolean renameTo(File dest):把文件重命名为指定的文件路径。
public void test5(){
File file = new File("hello.txt");
File file1 = new File("aaa.txt");
// File file1 = new File("d:/aaa.txt");
/*
举例:
file1.renameTo(file2)∶要想此方法执行完,返回true。要求:
file1必须存在,且file2必须不存在,且file2所在的文件目录需要存在。
*/
boolean rename = file.renameTo(file1);
System.out.println(rename?"重命名成功":"重命名失败");
}
4、判断功能的方法
- public boolean exists() :此File表示的文件或目录是否实际存在。
- public boolean isDirectory() :此File表示的是否为目录。
- public boolean isFile() :此File表示的是否为文件。
- public boolean canRead():判断是否可读
- public boolean canWrite():判断是否可写.
- public boolean isHidden():判断是否隐藏
public void test6(){
File file1 = new File("aaa.txt");
System.out.println(file1.exists());//true
System.out.println(file1.isDirectory());//false
System.out.println(file1.isFile());//true
System.out.println(file1.canRead());//true
System.out.println(file1.canWrite());//true
System.out.println(file1.isHidden());//false
}
5.创建、删除功能
- public boolean createNewFile():创建文件。若文件存在,则不创建,返回false。
- public boolean mkdir():创建文件目录。如果此文件目录存在,就不创建了。如果此文件目录的上层目录不存在,也不创建。
- public boolean mkdirs():创建文件目录。如果上层文件目录不存在,一并创建。
- public boolean delete():删除文件或者文件夹
删除注意事项:①Java中的删除不走回收站。②要删除一个文件目录,请注意该文件目录内不能包含文件或者文件目录。
public void test7() throws IOException {
File file = new File("F:\\io\\hello/xx.txt");
//测试文件的创建、删除
if (!file.exists()){
boolean isnewFile = file.createNewFile();
if (isnewFile){
System.out.println("创建成功");
}
}else {
System.out.println("此文件已经存在");
}
System.out.println(file.delete()?"文件删除成功":"文件删除失败");
}
public void test8(){
File file = new File("F:\\io\\hi");
System.out.println(file.mkdir()?"创建文件目录成功":"创建文件目录失败");
//前提: f :/io文件目录存在,hi目录是不存在的。
}
public void test9(){
File file = new File("F:\\io\\uu/yy");
System.out.println(file.mkdir()?"创建文件目录成功":"创建文件目录失败");
//前提: f :/io文件目录存在,hi目录是不存在的。
File file1 = new File("F:\\io\\oo/pp");
System.out.println(file1.mkdirs()?"创建文件目录成功":"创建文件目录失败");
}
判断指定目录下是否有后缀名为.jpg的文件
public class Exer02 {
/*
*判断指定目录下是否有后缀名为.jpg的文件,如果有,就输出该文件名称**/
public void test1(){
File dir = new File( pathname: "F:1110-图片");
String[] listFiles = dir.list();
for(String s : listFiles){
if(s.endsWith(".jpg")){
system.out.println(s);
}
}
}
===========
//方式2:
/ / public String[] list(FilenameFilter filter)
String[ ] listFiles = dir.list(new FilenameFilter() {
Override
public boolean accept(File dir,String name) {//name:即为子文件或子文件目录的名称
//if( name.endsWith( ".jpg")){
//return true;
//}else{
//return false;
//}
return name. endswith( " .jpg" );
}
});
练习;
遍历指定文件目录下的所有文件的名称,包括子文件目录中的文件。
public void printFileName(File file)//file可能是文件,也可能是文件目录
public void printFileName(File file){
if(file.isFile()){
system.out.println(file.getName() );
}else if(file.isDirectory(){
File[] files = file.listFiles();
for(File f : files){
printFileName(f);//递归
}
}
}
标签:文件目录,File,IO,file,println,15,public,out
From: https://www.cnblogs.com/xin-zhi-suo-xiang/p/17682001.html