day19Java

编程入门 行业动态 更新时间:2024-10-26 09:28:35

day19Java

day19Java

博客名称
Java-(中级)

文章目录

        • IO-File
        • File-构造方法
        • File-创建功能
        • File-删除功能
        • File-重命名功能
        • File-判断功能
        • File-获取功能1
        • File-获取功能2
        • File-练习
          • 需求1:过滤文件
          • 需求2:使用文件过滤器过滤文件
          • 需求3:把E:\评书\三国演义下面的视频名称修改为00?_介绍.avi

IO-File

java.io.File
我们要想实现IO的操作,就必须知道硬盘上文件的表现形式。
而Java就提供了一个类File供我们使用。

File:文件和目录(文件夹)路径名的抽象表示形式

File-构造方法

File(String pathname):根据一个路径得到File对象
File(String parent, String child):根据一个目录和一个子文件/目录得到File对象
File(File parent, String child):根据一个父File对象和一个子文件/目录得到File对象

代码演示

public class FileDemo {public static void main(String[] args) {//File(String pathname):根据一个路径得到File对象//把E:\Test\a.txt封装成File对象File file1 = new File("E:\\Test\\a.txt");System.out.println(file1);System.out.println("-------------------");//File(String parent, String child):根据一个目录和一个子文件/目录得到File对象File file2 = new File("E:\\Test","a.txt");System.out.println(file2);System.out.println("-------------------");//File(File parent, String child):根据一个父File对象和一个子文件/目录得到File对象File file3 = new File("E:\\Test");File file4 = new File(file3,"a.txt");System.out.println(file4);//以上三种方式效果是一样的}
}

结果:

E:\Test\a.txt
-------------------
E:\Test\a.txt
-------------------
E:\Test\a.txt
File-创建功能

public boolean mkdir():创建文件夹 如果存在这样的文件夹,就不创建了(创建文件夹成功放回true,否则false)注意:只能创建单个文件夹
public boolean createNewFile():创建文件 如果存在这样的文件,就不创建了(创建文件成功放回true,否则false)
public boolean mkdirs():创建文件夹,如果父文件夹不存在,会帮你创建出来(创建多个文件夹成功放回true,否则false)

代码演示

public class FileDemo {public static void main(String[] args) throws IOException {//需求1:在E盘创建一个aaa目录File file = new File("E:\\aaa");System.out.println("mkdir():"+file.mkdir());//需求2:在E盘aaa目录插件a.txt文件File file2 = new File("E:\\aaa\\a.txt");System.out.println("createNewFile():"+file2.createNewFile());//需求3:在E盘bbb目下创建b.txt文件//File file3 = new File("E:\\bbb\\b.txt");//注意:在某个文件夹下创建文件,这个文件夹首先要存在//System.out.println("createNewFile():"+file3.createNewFile());//IOExceptio:系统找不到指定路径//需求4:在E盘连续创建两个文件夹File file4 = new File("E:\\ccc\\ddd");//注意:在某个父文件夹创建子文件夹,这个父文件夹首先存在System.out.println("mkdir():"+file4.mkdir());//需求5:在E盘连续创建两个文件夹File file5 = new File("E:\\eee\\fff");System.out.println("mkdirs():"+file5.mkdirs());}
}
File-删除功能

删除功能:public boolean delete()

注意:A:如果你创建文件或者文件夹忘了写盘符路径,那么,默认在项目路径下。B:Java中的删除不走回收站。C:要删除一个文件夹,请注意该文件夹内不能包含文件或者文件夹

代码演示

public class FileDemo {public static void main(String[] args) throws IOException {//注意:没指定盘符,默认是项目路径下File file = new File("a.txt");System.out.println(file.createNewFile());//在项目路径下创建几个文件夹File file2 = new File("aaa\\bbb\\ccc");System.out.println(file2.mkdirs());//删除功能:我要删除a.txt这个文件File file3 = new File("a.txt");System.out.println(file3.delete());//删除功能:我要删除ccc这个文件夹File file4= new File("aaa\\bbb\\ccc");System.out.println(file4.delete());//删除功能:我要删除aaa这个文件夹//注意:不能删除有内容(文件(夹))的文件夹File file5  = new File("aaa");System.out.println(file.delete());//要先删除文件夹中的内容File file6 = new File("aaa\\bbb");file6.delete();File file7 = new File("aaa");file7.delete();}
}
File-重命名功能

重命名功能:public boolean renameTo(File dest)
如果路径名相同,就是改名。
如果路径名不同,就是改名并剪切。

路径以盘符开始:绝对路径 c:\a.txt
路径不以盘符开始:相对路径 a.txt

代码演示:

public class FileDemo {public static void main(String[] args) {//重命名功能:把林青霞.jpg重命名为东方不败.jpgFile file = new File("林青霞.jpg");File file2 = new File("东方不败.jpg");System.out.println("delete():" + file.renameTo(file2));//重命名功能:把林青霞.jpg重命名为东方不败.jpg,并移动到E盘符下File file3 = new File("林青霞.jpg");File file4 = new File("E:\\东方不败.jpg");System.out.println(file3.renameTo(file4));}
}
File-判断功能

public boolean isDirectory():判断是否是目录
public boolean isFile():判断是否是文件
public boolean exists():判断是否存在
public boolean canRead():判断是否可读
public boolean canWrite():判断是否可写
public boolean isHidden():判断是否隐藏

代码演示

public class FileDemo {public static void main(String[] args) throws IOException {File file = new File("a.txt");file.createNewFile();//public boolean isDirectory():判断是否是目录System.out.println("isDirectory():"+file.isDirectory());//false//public boolean isFile():判断是否是文件System.out.println("isFile():"+file.isFile());//true//public boolean exists():判断是否存在System.out.println("extsts():"+file.exists());//true//public boolean canRead():判断是否可读System.out.println("canRead():"+file.canRead());//true//public boolean canWrite():判断是否可写System.out.println("canWrite():"+file.canWrite());//true//public boolean isHidden():判断是否隐藏System.out.println("isHidden():"+file.isHidden());//true}
}
File-获取功能1

public String getAbsolutePath():获取绝对路径
public String getPath():获取相对路径
public String getName():获取名称
public long length():获取长度。字节数
public long lastModified():获取最后一次的修改时间,毫秒值

代码演示

public class FileDemo {public static void main(String[] args) throws IOException {File file = new File("b.txt");file.createNewFile();//public String getAbsolutePath():获取绝对路径System.out.println("getAbsolutePath:" + file.getAbsolutePath());//D:\MyWorkSpace\basic-code\b.txt//public String getPath():获取相对路径System.out.println("getPath:" + file.getPath());//b.txt//public String getName():获取名称System.out.println("getName:" + file.getName());//b.txt//public long length():获取长度。字节数System.out.println("length:" + file.length());//0//public long lastModified():获取最后一次的修改时间,毫秒值long time = file.lastModified();System.out.println("lastsModified:" + time);//1585045748128//将long转为dateSimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Date d = new Date(time);String format = sdf.format(d);System.out.println(format);}
}

结果:

getAbsolutePath:D:\MyWorkSpace\basic-code\b.txt
getPath:b.txt
getName:b.txt
length:0
lastsModified:1585045748128
2020-03-24
File-获取功能2

public String[] list():获取指定目录下的所有文件或者文件夹(包括隐藏)的名称数组(下级目录的内容不能获取)
public File[] listFiles():获取指定目录下的所有文件或者文件夹(包括隐藏)的File数组(下级目录的内容不能获取)
**注意:**如果指定目录是一个空目录,返回[]。如果指定的是一个文件,返回就是null值。
举例:

目录aaa
目录bbb/b.txt(b.txt是文件)File file1 = new File("aaa");File[] files=file.listFiles;//[]File file2 = new File("bbb\\b.txt");File[] files=file2.listFiles;//null

代码演示

public class FileDemo {public static void main(String[] args) {//File file  = new File("D:\\");File file = new File("D:\\360安全浏览器下载");//public String[] list():获取指定目录下的所有文件或者文件夹的名称数组String[] list = file.list();for (String name : list) {System.out.println(name);}System.out.println("------------------------");//public File[] listFiles():获取指定目录下的所有文件或者文件夹的File数组File[] files = file.listFiles();for (File f : files) {System.out.println(f.getName());}}
}

结果:

abbyy%2520finereader%252012%2520PE%252012.0.101.264%25E8%25A1%25A5%25E4%25B8%2581.rar
Del_Lic_Serv.bat
FixFiles
Java各知识点详细总结.pdf
吃点饭.ssf
火影忍者.ssf
结婚吧!!.ssf
补丁使用说明.txt
------------------------
abbyy%2520finereader%252012%2520PE%252012.0.101.264%25E8%25A1%25A5%25E4%25B8%2581.rar
Del_Lic_Serv.bat
FixFiles
Java各知识点详细总结.pdf
吃点饭.ssf
火影忍者.ssf
结婚吧!!.ssf
补丁使用说明.txt
File-练习
需求1:过滤文件

判断E盘目录下是否有后缀名为.jpg的文件,如果有,就输出此文件名称

分析:1:把E盘封装成File对象2.使用File对象获取E盘下所有的文件或文件夹3.遍历File数组判断是否是文件是:在判断是否是以.jpg结尾是:输出不是:不搭理不是:不搭理

代码演示

public class FileDemo {public static void main(String[] args) {//封装E盘File file = new File("E:\\");//获取E盘下所有文件或者文件夹File数组File[] files = file.listFiles();//遍历File数组for (File f : files) {//判断是否是文件if (f.isFile()) {//判断是否以.jpg结尾if (f.getName().endsWith(".jpg")) {System.out.println(f.getName());}}}}
}

结果:

东方不败.jpg
需求2:使用文件过滤器过滤文件

判断E盘目录下是否有后缀名为.jpg的文件,如果有,就输出此文件名称
A:先获取所有的,然后遍历的时候,依次判断,如果满足条件就输出。
B:获取的时候就已经是满足条件的了,然后输出即可。(使用文件过滤器java.io.FilenameFilter(接口))

要想实现这个效果,就必须学习一个接口:文件名称过滤器
public String[] list(FilenameFilter filter):文件过滤器,返回的是过滤好的文件
public File[] listFiles(FilenameFilter filter):文件过滤器返回的是过滤好额文件对象

代码演示1
public String[] list(FilenameFilter filter)

public class FileDemo {public static void main(String[] args) {File file = new File("E:\\");//返回的就是符合条件的文件了String[] files = file.list(new FilenameFilter() {@Overridepublic boolean accept(File dir, String name) {//System.out.println(dir);//System.out.println(name);/*File f = new File(dir,name);boolean flag = f.isFile();boolean flag2 = name.endsWith(".jpg");return flag&&flag2;*/return new File(dir,name).isFile() && name.endsWith(".jpg");}});for(String s:files){System.out.println(s);}}
}

结果:

东方不败.jpg

代码演示2

public class FileDemo2 {public static void main(String[] args) {File file = new File("E:\\");File[] files = file.listFiles(new FilenameFilter() {@Overridepublic boolean accept(File dir, String name) {return new File(dir, name).isFile() && name.endsWith(".jpg");}});for (File f : files) {System.out.println(f.getName());}}
}

结果:

东方不败.jpg
需求3:把E:\评书\三国演义下面的视频名称修改为00?_介绍.avi

代码演示

public class FileDemo03 {public static void main(String[] args) {//封装评书对象File file = new File("E:\\评书\\三国演义");//获取所有评书中的小说File[] files = file.listFiles();for (File f : files) {//三国演义_001_[评书网-今天很高兴,明天就IO了]_桃园三结义.avi//截取集数(这样写其实写死了,如果前面三国演义是变化的就不行了,所以不建议写死。)//String number = f.getName().substring(5, 8);//001//截取集数int index = f.getName().indexOf("_");//获取第一给底杠索引String number = f.getName().substring(index + 1, index + 4);//截取_桃园三结义.aviString content = f.getName().substring(f.getName().lastIndexOf("_"));//_桃园三结义.aviString pingshu = number.concat(content);//001_桃园三结义.aviSystem.out.println(pingshu);//重命名f.renameTo(new File(file, pingshu));}}
}

结果:

桃园三_桃园三结义.avi
十常之_十常之乱.avi
三英战_三英战吕布.avi
赤壁之_赤壁之战.avi
月下追_月下追貂蝉.avi

更多推荐

day19Java

本文发布于:2024-03-08 16:34:33,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1721459.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:day19Java

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!