在学习IO流之前,先学习 File类。我们要实现IO的操作,就必须知道硬盘上文件的表现形式。而java就提供了一个File类供我们使用。
File:文件或目录(文件夹)路径名的抽象表示形式。
构造方法:
File(String pathName) : 根据一个路径得到File对象
File(String parent,String child) :根据一个目录和一个子文件/目录 得到File对象
File(File parent,String child) :根据一个父File对象 和一个子文件/目录 得到File对象
一般习惯用第一个构造
创建功能:
public boolean createNewFile() :创建文件,如果存在就不创建
public boolean mkdir():创建文件夹,如果存在就不创建,注意父路径必须要存在才能创建
public boolean mkdirs():创建文件夹,如果不存在就自动创建
void createFile() throws IOException { File file1 = new File("d://demo"); file1.mkdir(); File file2 = new File("d://demo/a.txt"); file2.createNewFile(); File file3=new File("d://demo/aaa/bbb"); file3.mkdirs(); }
删除功能:
public boolean delete()
注意:1、java中删除不走回收站。2、要删除一个文件夹,须要注意该文件夹内不能有文件或文件夹。
void deleteFile() throws IOException { File file=new File("a.txt");//注意如果没有写盘符,默认是在项目路径下 file.createNewFile(); //删除file对象 file.delete(); }
重命名功能:
public boolean renameTo(File dest)
如果路径名相同,就是改名,如果路径名不同就是剪切并改名
void renameFile(){ File file1=new File("aa.jpg"); File file2=new File("d://bb.jpg"); file1.renameTo(file2); }
判断功能:
public boolean exists()
public boolean isDirectory()
public boolean isFile()
public boolean isHidden()
public boolean canRead()
public boolean canWrite()
获取功能:
public String getAbsolutePath()
public String getPath()
public String getName()
public long lastModified()
public long length()
public String[] list() :获取指定文件夹下的所有文件或文件夹的名称的数组
public File[] listFiles() :获取指定文件夹下所有File对象的数组
void getFile(){ File file=new File("d://"); String[] names=file.list();//获取D盘下所有文件或文件夹的名称数组 for(String s:names){ System.out.println(s); } System.out.println("--------------------"); File[] files=file.listFiles(); //获取D盘下所有文件或文件夹的File对象数组 for(File f:files){ System.out.println(f.getName()); } }
通过过滤器获取:
public String[] list(FilenameFilter filter)
FilenameFilter是一个接口,通过传入它的实现类,将满足条件的文件名加入到数组中
void getFileByFilter(){ File file=new File("d://"); //获取D盘根目录下所有jpg文件 String[] names=file.list(new FilenameFilter() { @Override public boolean accept(File dir, String name) { return new File(dir,name).isFile() && name.endsWith(".jpg"); } }); for(String s:names){ System.out.println(s); } }