【JavaSE笔记】IO(二)File类

来源:互联网 发布:考研数学辅导书 知乎 编辑:程序博客网 时间:2024/06/06 07:00
本期知识点
File

1.概述:

要学习IO流,就必须掌握硬盘上的路径表现形式。
Java就提供了一个File类。
是文件和目录路径的抽象表示形式。

2.构造方法:

public File(String pathname): 将该路径名称封装成了一个File实例
File(String parent, String child):将父文件夹或者目录里面的child文件封装成一个File实例
File(File parent, String child):根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例
参数一:表示封装了File对象,该文件夹下的文件
import java.io.File;
public class File类的构造方法 {public static void main(String[] args) {//public File(String pathname):将该路径名称封装成了一个File实例File a = new File("e:\\File类的构造方法\\a\\a.txt");// File(String parent, String child):将父文件夹或者目录里面的child文件封装成一个File实例File b = new File("e:\\b\\b.txt");//File(File parent, String child:参数一:表示封装了File对象,该文件夹下的文件File c = new File("e:\\demo");File d = new File(c,"a.txt");}}

3.常用的成员方法

a.创建方法:

public boolean createNewFile()   表示创建文件,如果存在该文件,就不需要创建,会抛出异常!IOException
public boolean mkdir()   创建文件夹/目录,如果存在该文件夹,就不需要创建
public boolean mkdirs()   创建文件夹/目录,如果不存在该目录,就创建!

b.删除方法:

public boolean delete()   删除此抽象路径名表示的文件或文件目录
注意:
i.如果我们在写路径的时候,没有带盘符,那么默认是在当前项目路径下
ii.java中的删除不走回收站
iii.delete不能删除带有内容的文件夹,只能逐个删除

c.重命名方法:

public boolean renameTo(File dest)   重命名
两个文件的路径一致的情况下,只是改名字
两个文件的路径不一致的情况下,不但改名字,而且剪切

d.判断方法:

public boolean isAbsolute()   判断该路径是否是绝对路径
public boolean isFile()  判断此文件是否为一个标准文件
public boolean isHidden()   判断此抽象路径表示的文件是否是一个隐藏文件
public boolean canRead()   可读
public boolean canWrite()   可写

e.获取方法:

public String getAbsolutePath()   获取绝对路径
public STring getPath()   获取相对路径
public String getName()   获取文件或者目录的名称
public long length()   获取文件的长度

public long lastModified()   返回次抽象路径文件最后一次被修改的时间,返回的修改时间的一个毫秒值

import java.io.File;import java.io.IOException;//File类中常用的成员方法:// public boolean createNewFile():表示创建文件,如果存在该文件,就不需要创建,会抛出异常!IOException// public boolean mkdir():创建文件夹/目录,如果存在该文件夹,就不需要创建// public boolean mkdirs():创建文件夹/目录,如果不存在该目录,就创建!public class File类中常用的方法_创建 {public static void main(String[] args) throws IOException {//需求:在e盘下创建一个文件File a = new File("e:\\File类中常用的方法__创建\\b.txt");System.out.println(a.createNewFile());File b = new File("e:\\File类中常用的方法__创建");System.out.println(b.mkdir());File c = new File("e:\\File类中常用的方法__创建\\创建");System.out.println(c.mkdirs());}}
import java.io.File;import java.io.IOException;public class File类中常用的方法_删除 {public static void main(String[] args) throws IOException {File a = new File("a.txt");a.createNewFile();//没有盘符情况下创建目录File b = new File("aa\\bb\\cc");System.out.println("mkdirs:"+b.mkdirs());//删除aa目录System.out.println("delete:"+b.delete());//只能逐个删除File c = new File("aa\\bb");System.out.println("delete:"+c.delete());File d = new File("aa");System.out.println("delete:"+d.delete());}}
import java.io.File;public class File类中常用的方法_重命名 {public static void main(String[] args) {//封装当前项目下的图片文件File a = new File("R6S_Wallpaper-01_1920x1080.jpg");//新建一个File对象File b = new File("D:\\Pictures\\Saved Pictures\\YF.jpg");//调用重命名方法System.out.println("renameTo:"+a.renameTo(b));}}

import java.io.File;/*File类中提供了一些判断功能: public boolean isAbsolute():判断该路径是否是绝对路径 public boolean isFile()判断此文件是否为一个标准文件 public boolean isHidden():判断此抽象路径表示的文件是否是一个隐藏文件  public boolean canRead():可读  public boolean canWrite():可写*/public class File类中常用的方法_判断 {public static void main(String[] args) {//创建File文件对象File f = new File("f2.txt");System.out.println("isAbsolute:"+f.isAbsolute());System.out.println("isFile:"+f.isFile());System.out.println("isHidden:"+f.isHidden());System.out.println("canRead:"+f.canRead());System.out.println("canRead:"+f.canWrite());}}

import java.io.File;import java.text.SimpleDateFormat;import java.util.Date;public class File类中常用的方法_获取 {public static void main(String[] args) {//封装路径File a = new File("aa\\a.txt");//public String getAbsolutePath():获取绝对路径System.out.println("getAbsolutePath:"+a.getAbsolutePath());//public STring getPath():获取相对路径System.out.println("getPath:"+a.getPath());//public String getName():获取文件或者目录的名称System.out.println("getName:"+a.getName());//public long length():获取文件的长度System.out.println("length:"+a.length());//public long lastModified():返回次抽象路径文件最后一次被修改的时间,返回的修改时间的一个毫秒值System.out.println("lastModified:"+a.lastModified());Date d = new Date(a.lastModified());SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String s = sd.format(d);System.out.println(s);}}

4.File类的高级获取功能:

public String[] list()   该方法是获取指定盘符下的所有的文件以及文件夹的名称数组

public File[] listFiles()   获取指定盘符下的所有文件以及文件夹的File对象数组(常用)


import java.io.File;public class File类的高级获取功能 {public static void main(String[] args) {//需求获取F盘下所有的文件以及文件夹名称//将F盘的路径封装成一个File对象File a = new File("F:\\");//public String[] list():该方法是获取指定盘符下的所有的文件以及文件夹的名称数组String []sa = a.list();//增强for遍历for (String s : sa) {System.out.println(s);}System.out.println("-----------------");//public File[] listFiles():获取指定盘符下的所有文件以及文件夹的File对象数组(常用)File []fa = a.listFiles();//只要是对象就必须左非空判断if(fa!=null){for (File d : fa) {System.out.println(d.getName());}}}}


5.应用

判断E盘目录下是否有后缀名为.jpg的文件,如果有,就输出此文件名称
a.首先获取所有,然后遍历,判断,最终输出,使用文件名称过滤.
b.当我们获取的时候,就已经有结果,要想实现这样一样结果:就必须学习一个接口:
FilenameFileter
public File[] listFiles(FileFilter filter)

public String[] list(FilenameFilter filter)(这个文件名称过滤器中常用) 形式参数如果是一个接口对象:其实需要传递的是子实现类对象/匿名内部类

import java.io.File;public class 练习1_方式一 {public static void main(String[] args) {//把e盘封装成对象File f = new File("e:\\");//获取当前盘下所有文件夹以及文件的File数组File[] fa = f.listFiles();//非空判断if(fa!=null){for (File file : fa) {//判断是否为文件if(file.isFile()){//继续判断 是不是.jpgif(file.getName().endsWith(".jpg"));System.out.println(file.getName());}}}}}

import java.io.File;import java.io.FilenameFilter;/*方式2:当我们获取的时候,就已经有结果,要想实现这样一样结果:就必须学习一个接口:FilenameFileterpublic File[] listFiles(FileFilter filter)public String[] list(FilenameFilter filter)(这个文件名称过滤器中常用) 形式参数如果是一个接口对象:其实需要传递的是子实现类对象/匿名内部类*/ public class 练习1_方式二 {public static void main(String[] args) {//封装E盘File a = new File("e:\\");//获取当前盘符下所有文件以及文件夹的String数组String [] s = a.list(new FilenameFilter() {//File dir :指定的文件//name:文件名称列表@Overridepublic boolean accept(File dir, String name) {//System.out.println(dir+"---"+name);//创建File对象File f = new File(dir,name);//首先判断是否是文件boolean flag = f.isFile();//判断是否是.jpgboolean flag2 = name.endsWith(".jpg");return flag && flag2;}});for (String ss : s) {System.out.println(ss);}}}


原创粉丝点击