java.io.File的使用。
IO原理及流的分类。
文件流:FileInputStream、FileOutputStream、FileReader、FileWriter
缓存流:BufferedInputStream、BufferedOutputStream、BufferedReader、BufferedWriter
转换流:InputStreamReader、OuputStreamReader
标准输入/输出流
打印流
数据流
对象流:涉及序列化和反序列化ObjectInputStream、ObjectOutputStream
随机存取文件流:RandomAcessFile
java.io.File类:文件和目录路径名的抽象表示形式,与平台无关。
File能新建、删除、重命名文件和目录,但File不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流。
File对象可以作为参数传递给构造函数。
File类常用构造方法:
- public File(String pathname)。以pathname为路径创建File对象,可以是绝对路径,也可以是相对路径,如果pathname是相对路径,则默认的当前路径在系统属性user.dir中存储。
- public File(String parent,String child);。以parent为父路径,child为子路径创建File对象。
- File的静态属性String sperator存储了当前系统的路径分隔符,在Unix中,此字段为"/",在windows中为"\"。
访问文件名:
- getName()
- getPath()
- getAbsoluFile()
- getAbosoluPath()
- getParent()
- renameTo(File newName)
文件检测:
- exists()
- canWrite()
- canRead()
- isFile()
- isDirectory()
获取常规文件信息:
- lastModify()
- length()
文件操作相关:
- createNewFile()
- delete()
目录操作相关:
- mkDir()
- list()
- listFiles()
package anno; import java.io.File; public class Test1 { public static void main(String[] args) { File f = new File("F:\test.txt"); System.out.println(f.getName()); //获取new File时的路径 System.out.println(f.getPath()); //获取文件的绝对路径 System.out.println(f.getAbsolutePath()); //用绝对路径包起来的File对象 System.out.println(f.getAbsoluteFile()); //当前文件的父级目录 System.out.println(f.getParent()); f.renameTo(new File("F:\test2.txt")); File f2 = new File("F:\test2.txt"); System.out.println(f2.exists()); System.out.println(f2.isFile()); System.out.println(f2.isDirectory()); //返回的是字节数 System.out.println(f2.length()); File f3 = new File("F:\test3.txt"); if(!f3.exists()) { try { //创建文件 f3.createNewFile(); }catch(Exception e){ e.printStackTrace(); }finally { System.out.println("创建完毕"); } } //删除文件 f3.delete(); File f4 = new File("F:\test4\name"); //f.mkDir();创建单层目录 //创建多层目录 if(!f4.exists()) { f4.mkdirs(); } File f5 = new File("F:\test4"); //返回的是字符串集合,包括文件和目录 String[] l1 = f5.list(); for(String l:l1){ System.out.println(l); } //返回的是个File集合,包括目录和文件 File[] l2 = f5.listFiles(); for(File l:l2){ System.out.println(l); } } }
递归判断某个文件夹下的文件是文件夹还是文件。
package anno; import java.io.File; public class Test1 { public static void main(String[] args) { File f = new File("F:\test\"); obtainFiles(f); } public static void obtainFiles(File f) { if(f.isFile()) { System.out.println(f.getAbsolutePath()+"是文件"); }else { System.out.println(f.getAbsolutePath()+"是文件夹"); File[] fs = f.listFiles();//获取当前目录下的文件夹或文件 if(fs!=null && fs.length>0) { for(File ff:fs) { obtainFiles(ff); } } } } }
输出:
F: est是文件夹
F: estfile1是文件夹
F: estfile2是文件夹
F: estfile3是文件夹
F: estfile4是文件夹
F: est est1.txt是文件
F: est est2.txt是文件
F: est est3.txt是文件
F: est est4.txt是文件