您的位置:首页 > 编程语言 > Java开发

(40)Java学习笔记——IO流技术 / File类

2017-02-16 12:12 381 查看

类 File

文件和目录路径名的抽象表示形式。 

构造方法:
public File(String pathname)    //根据一个路径得到File对象
public File(String parent, String child)     //根据一个目录和一个子文件(子目录)得到File对象
public File(File parent , String child)   //根据一个父File对象 和 一个子文件(子目录)得到File对象
范例:
package cn.itcast_01;

import java.io.File;

/*
* File 类
* 构造方法:
public File(String pathname)    //根据一个路径得到File对象
public File(String parent, String child)     //根据一个目录和一个子文件(子目录)得到File对象
public File(File parent , String child)   //根据一个父File对象 和 一个子文件(子目录)得到File对象
*/
public class FileDemo {
public static void main(String[] args) {
//public File(String pathname)    //根据一个路径得到File对象
File file = new File("D:\\demo\\a.txt");	//只是一个抽象的指向对象(不负责创建等其他功能)

//public File(String parent, String child)     //根据一个目录和一个子文件(子目录)得到File对象
File file2 = new File("D:\\demo","a.txt");

//public File(File parent , String child)   //根据一个父File对象 和 一个子文件(子目录)得到File对象
File file3 = new File("E:\\demo");
File file4 = new File(file3,"a.txt");

//以上三种方式效果一样

}
}

成员方法:

创建功能
public boolean createNewFile()   //创建一个新文件,如果存在就不创建了
public boolean mkdir()    // 创建一个文件夹,如果存在就不创建了
public boolean mkdirs()   // 创建一个文件夹,并创建不存在的父文件夹
注意:如果创建文件或文件夹没有写盘符路径,就会默认在项目路径下。
删除功能:
public boolean delete()   //
注意:要删除一个文件夹,该文件夹内不能包含文件或者文件夹
重命名功能
public boolean renameTo(File dest)
注意:如果路径名相同,就是改名
如果路径名不同,就是改名并剪切。
范例:
package cn.itcast_02;

import java.io.File;
import java.io.IOException;

/*
* File
* 创建功能:
public boolean createNewFile()   //创建一个新文件
public boolean mkdir()    // 创建一个文件夹
public boolean mkdirs()   // 创建一个文件夹,并创建不存在的父文件夹
删除功能:
public boolean delete()
重命名功能
public boolean renameTo(File dest)
*/
public class FileDemo {
public static void main(String[] args) throws IOException {	//这里会需要抛出异常
//需求:在G盘JavaWorkPlace目录下创建一个文件夹demo
//public boolean mkdir()    // 创建一个文件夹
File file = new File ("G:\\JavaWorkPlace\\demo");
System.out.println("mkdir:"+file.mkdir());

//需求:在G盘JavaWorkPlace目录下创建一个a.txt文件
//public boolean createNewFile()   //创建一个新文件
File file2 = new File("G:\\JavaWorkPlace\\demo\\a.txt");
System.out.println(file2.createNewFile());	//这里会需要抛出异常

//需求:在G盘JavaWorkPlace目录下test目录下创建一个文件b.txt
File file3 = new File("G:\\JavaWorkPlace\\test");
System.out.println(file3.mkdir());
File file4 = new File("G:\\JavaWorkPlace\\test\\b.txt");
System.out.println(file4.createNewFile());

//需求:在G盘JavaWorkPlace目录下test2目录下创建aaa目录
File file5 = new File("g:\\JavaWorkPlace\\test2\\aaa");
System.out.println(file5.mkdirs());

//需求:删除G盘JavaWorkPlace目录下test目录下创建一个文件b.txt
File file6 = new File("G:\\JavaWorkPlace\\test\\b.txt");
System.out.println(file6.delete());

//需求:重命名G盘JavaWorkPlace目录下test2目录下aaa目录成bbb
File newFile = new File("g:\\JavaWorkPlace\\test2\\bbb");	//注意,要先指向位置
System.out.println(file5.renameTo(newFile));
}
}

判断功能:
public boolean isDirectory()  //判断是否是文件夹
public boolean isFile()   //判断是否是文件
public boolean exists()   //判断是否存在
public boolean canRead()   //判断是否可读
public boolean canWrite()  //判断是否可写
public boolean isHidden()   //判断是否隐藏
范例:
package cn.itcast_03;

import java.io.File;

/*
* 判断功能:
public boolean isDirectory()  //判断是否是文件夹
public boolean isFile()   //判断是否是文件
public boolean exists()   //判断是否存在
public boolean canRead()   //判断是否可读
public boolean canWrite()  //判断是否可写
public boolean isHidden()   //判断是否隐藏
*/
public class FileBooleanDemo {
public static void main(String[] args) {
//创建文件对象
File file = new File("a.txt");

//public boolean isDirectory()  //判断是否是文件夹
System.out.println(file.isDirectory());	//false
System.out.println(file.isFile());	//true
}
}
获取功能:
基本获取功能:
public String getAbsoluePath()  //获取绝对路径
public String getPath()   //获取相对路径
public String getName()   //获取名称
public long length()   //获取长度。字节数
public long lastModified()   //获取最后一次的修改时间,返回毫秒值
范例:
package cn.itcast_04;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;

/*
* 获取功能:
基本获取功能:
public String getAbsoluePath()  //获取绝对路径
public String getPath()   //获取相对路径
public String getName()   //获取名称
public long length()   //获取长度。字节数
public long lastModified()   //获取最后一次的修改时间,返回毫秒值
*/
public class FileGetDemo {
public static void main(String[] args) {
//创建文件对象
File file = new File("demo\\test.txt");

//public String getAbsoluePath()  //获取绝对路径
System.out.println(file.getAbsolutePath()); //G:\JavaWorkPlace\page40_File\demo\test.txt

//public String getPath()   //获取相对路径
System.out.println(file.getPath()); 	//demo\test.txt

//public String getName()   //获取名称
System.out.println(file.getName());		//test.txt

//public long length()   //获取长度。字节数
System.out.println(file.length());		//5

//public long lastModified()   //获取最后一次的修改时间,返回毫秒值
System.out.println(file.lastModified());		//1487229623508
//解析时间
Date d = new Date(1487229623508L);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String s = sdf.format(d);
System.out.println(s); 	//2017-02-16 15:20:23
}
}

高级获取功能:
public String[ ] list()  //返回一个字符串数组,获取指定目录下的所有文件或者文件夹名称数组。
public File[ ] listFiles()//返回一个抽象路径名数组,获取指定目录下的所有文件或者文件夹的File数组
范例:
package cn.itcast_04;

import java.io.File;

/*
* public String[ ] list()  //返回一个字符串数组,获取指定目录下的所有文件或者文件夹名称数组。
public File[ ] listFiles()//返回一个抽象路径名数组,获取指定目录下的所有文件或者文件夹的File数组
*/
public class FileGetDemo02 {
public static void main(String[] args) {
//指定一个目录
File file = new File("g:\\");

// * public String[ ] list()  //返回一个字符串数组,获取指定目录下的所有文件或者文件夹名称数组。
String[] array = file.list();
for(String s : array){
System.out.println(s);
}
/*		返回结果:
$RECYCLE.BIN
JavaWorkPlace
SteamLibrary
System Volume Information
Virtual Machines
VXdata
筑翎工作*/

//public File[ ] listFiles()//返回一个抽象路径名数组,获取指定目录下的所有文件或者文件夹的File数组
File[] fileArray = file.listFiles();
for(File s : fileArray){
System.out.println(s);
}
/*		返回结果:
g:\$RECYCLE.BIN
g:\JavaWorkPlace
g:\SteamLibrary
g:\System Volume Information
g:\Virtual Machines
g:\VXdata
g:\筑翎工作*/

}
}


练习:
判断G盘目录下是否有后缀名为.jpg的文件,如果有,就输出次文件名称
方式思路一:先获取所有的,然后遍历的时候,依次判断,如果满足条件就输出
package cn.itcast_05;

import java.io.File;

/*
* 练习:判断G盘目录下是否有后缀名为.jpg的文件,如果有,就输出次文件名称
* 思路:
* A / 封装G判断目录
* B / 获取该目录下所有文件或者文件家的File数组
* C / 遍历该数组,得到每一个File对象,
* D / 是否是文件
* 			是:继续判断是否以.jpg结尾
* 				是:输出该文件
* 				否:不搭理
* 			否:不搭理
*/
public class FileTest_01 {
public static void main(String[] args) {
//创建文件对象
File file = new File("g:\\");

//获取该目录下所有文件或者文件家的File数组
File[]  fileArray = file.listFiles();

//遍历该数组,得到每一个File对象,
for (File f : fileArray){
//判断是不是文件
if(f.isFile()){
//判断是不是.jpg结尾
if (f.getName().endsWith(".jpg")){
//输出该文件名称
System.out.println(f.getName());
}

}

}

}
}
方式思路二:获取的收就已经满足条件了,然后输出
使用文件过滤器

接口 FilenameFilter

public String[] list(FilenameFilter filter) public File[] listFiles(FilenameFilter filter) 范例:
package cn.itcast_05;

import java.io.File;
import java.io.FilenameFilter;

/*
* 练习:判断G盘目录下是否有后缀名为.jpg的文件,如果有,就输出次文件名称
* 用接口FilenameFilter
public String[] list(FilenameFilter filter)
public File[] listFiles(FilenameFilter filter)
* 思路:
* A / 封装G判断目录
* B / 获取该目录下所有文件或者文件家的File数组
* C / 遍历该数组,得到每一个File对象,
* D / 是否是文件
* 			是:继续判断是否以.jpg结尾
* 				是:输出该文件
* 				否:不搭理
* 			否:不搭理
*/
public class FileTest_3 {
public static void main(String[] args) {
//创建文件对象
File file = new File("g:\\");

//获取该目录下所有文件或者文件夹的String数组
String[] strArray = file.list(new FilenameFilter(){

@Override
public boolean accept(File dir, String name) {   //accept是实现类
//在这个位置进行条件判断
File file = new File(dir,name);
boolean flag = file.isFile();
boolean flag2 = name.endsWith(".jpg");
return flag && flag2;
}

});

//遍历
for(String s: strArray){
System.out.println(s);
}
}
}
练习02:
package cn.itcast_06;

import java.io.File;

/*
* 批量修改文件名称
* F:\IDM\MySQL
* 需求:把这个下面的视频名称修改为00?_介绍.wmv
* 思路:
* A / 封装目录
* B / 遍历该File数组,得到每一个File对象
* C / 拼接一个新名称,然后重命名
*/
public class FileTest_01 {
public static void main(String[] args) {
//封装目录
File srcFolder = new File("F:\\IDM\\MySQL");

//获取该目录下文件的File数组
File[] fileArray = srcFolder.listFiles();

//遍历该File数组,得到每一个File对象
for (File file : fileArray){
//F:\IDM\MySQL\三通it学院-www.santongit.com-050-动力节点-MYSQL视频-练习题.wmv
//改后:F:\IDM\MySQL\050-动力节点-MYSQL视频-练习题.wmv
String name = file.getName();
int startIndex = name.indexOf("0");
String newName = name.substring(startIndex);
System.out.println(newName);

File newFile = new File(srcFolder,newName);

//重名即可
file.renameTo(newFile);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java io流 File类