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

来源:互联网 发布:单片机乐谱 编辑:程序博客网 时间:2024/05/02 02:25

类 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.txtFile 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.txtFile file6 = new File("G:\\JavaWorkPlace\\test\\b.txt");System.out.println(file6.delete());//需求:重命名G盘JavaWorkPlace目录下test2目录下aaa目录成bbbFile 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());//falseSystem.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.BINJavaWorkPlaceSteamLibrarySystem Volume InformationVirtual MachinesVXdata筑翎工作*///public File[ ] listFiles()//返回一个抽象路径名数组,获取指定目录下的所有文件或者文件夹的File数组File[] fileArray = file.listFiles();for(File s : fileArray){System.out.println(s);}/*返回结果:g:\$RECYCLE.BINg:\JavaWorkPlaceg:\SteamLibraryg:\System Volume Informationg:\Virtual Machinesg:\VXdatag:\筑翎工作*/}}

练习:
判断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的文件,如果有,就输出次文件名称 * 用接口FilenameFilterpublic 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(){@Overridepublic 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视频-练习题.wmvString 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);}}}


0 0