File类是对文件系统中文件以及目录(文件夹)进行封装的对象,可以通过面向对象的思想来操作文件和目录(文件夹)。File类保存文件或目录的各种元素的信息,包括文件名,文件长度,最后修改日期,是否可读,获取当前文件的路径名,判断指定文件是否存在,获得当前文件的列表,创建、删除文件目录等方法。

  /**
     * 构造方法:File f = new File("file.txt");//file.txt 相对路径
     *       File f1 = new File("c:"+File.separator+"abc"+File.separator+"lp", "b.txt");//c:\abc\lp\b.txt 绝对路径
              File f2 = new File(File d, child);
 
        常用方法:
              新建文件:

      boolean createNewFile() 如果文件存在,则返回false,不会被覆盖,这和输出流不一样,IO输出流每次都会覆盖
                 public static File createTempFile(String prefix, String suffix) throws IOException
                     在默认的情况下创建一个临时空文件,给定前缀(abc)和后缀(.tmp)
                 public static File createTempFile(String prefix, String suffix, File directory) throws IOException
                      指定目录中创建一个新的空文件,使用给定的前缀和后缀字符串生成其名称
                  directory如果为null,使用默认的路径,  在windows上为C盘存放Tmp的目录下面,UNIX下面通常是"/tmp"或"/var/temp
             创建目录:

       boolean mkdirs() 可以递归的创建不存在的目录,创建多级目录
                  boolean mkdir() 创建目录,不能递归,如果存在不能创建,
             删除文件: boolean delete() 删除File对象所对应的文件和路径
                  public void deleteOnExit() 在虚拟机终止时,请求删除此抽象路径名表示的文件或目录
             判断:

boolean exists()  测试此抽象路径名表示的文件或目录是否存在。
                 boolean isDirectory() 测试此抽象路径名表示的文件是否是一个目录。
                 boolean isFile()  测试此抽象路径名表示的文件是否是一个标准文件。
              获取:

String getName()
               String getParent()
               String getPath()
               String getAbsolutePath()  返回此抽象路径名的绝对路径名字符串。
               File getAbsoluteFile() 返回此抽象路径名的绝对路径名所对应的File对象
               long lastModified()   返回此抽象路径名表示的文件最后一次被修改的时间。
               long getFreeSpace() 获取指定分区(例如D盘)可用的空间,或者剩余的空间
               long getUsableSpace() 获取分区(例如D盘的可用于虚拟机的空间
               long getTotalSpace()获取分区(例如D盘)总容量
             重命名:boolean renameTo(File dest) :把某个路径下的文件重命名,从一个盘重命名后剪切到另一个盘
 
              列出指定目录下面的文件:
               String[] list() 返回文件或者目录的名字,是字符串类型
               File[] listFiles() 返回文件或者目录对象,通过getName获取文件或者路径名称

文件过滤:
                String[] list(FilenameFilter filter)
                FilenameFilter-->>boolean accept(File dir, String name)
                可以使用此方法列出指定目录下面的带有某些后缀的文件
     *
     */

下面是看jdk6的测试代码:

  1. public class FileDemo {
  2. public static void main(String[] args) throws IOException {
  3. //createFileMethod();
  4. listRoots();
  5. }
  6. //创建文件
  7. public static void createFileMethod(){
  8. File file = new File("file.txt");
  9. try {
  10. boolean b = file.createNewFile();
  11. System.out.print(b);
  12. } catch (IOException e) {
  13. // TODO Auto-generated catch block
  14. e.printStackTrace();
  15. }
  16. }
  17. //创建临时文件
  18. public static void createTempFileMethod(){
  19. File dir = new File("D:\\");
  20. try {
  21. File b = File.createTempFile("test", ".tmp",dir);//使用指定目录的方法
  22. System.out.print(b.getAbsolutePath());
  23. File b1 = File.createTempFile("tmp2", null);//使用不指定目录的构造方法
  24. System.out.print(b1.getAbsolutePath());
  25. } catch (IOException e) {
  26. // TODO Auto-generated catch block
  27. e.printStackTrace();
  28. }
  29. }
  30. //创建目录
  31. public static void createDirMethod(){
  32. File dir = new File("d:"+File.separator+"dfr"+File.separator+"ddd");
  33. File dir1 = new File("d:"+File.separator+"dff"+File.separator+"ddd");
  34. boolean b = dir.mkdirs();//可以递归的创建不存在的目录
  35. boolean b1 = dir1.mkdir();//创建目录,不能递归,只能创建一级目录
  36. System.out.println(b);
  37. System.out.println(b1);
  38. }
  39.  
  40. //删除文件
  41. public static void deleteFileMethod(){
  42. File file = new File("file.txt");
  43. try {
  44. boolean b = file.createNewFile();
  45. System.out.print(b);
  46. file.deleteOnExit();
  47. file.delete();
  48. } catch (IOException e) {
  49. // TODO Auto-generated catch block
  50. e.printStackTrace();
  51. }
  52. }
  53. //判断文件对象或者目录是否是文件或者目录时候,必须判断该文件是否存在
  54. public static void IsDirOrFileMethod() throws IOException{
  55. File file = new File("a.txt");
  56. File file1 = new File("d:"+File.separator+"hhh");
  57. file.createNewFile();
  58. file1.mkdir();
  59. System.out.println("是否存在"+file.exists());
  60. System.out.println("是否是文件"+file.isFile());
  61. System.out.println("是否是目录"+file.isDirectory());
  62. System.out.println("是否是隐藏"+file.isHidden());
  63. System.out.println("目录是否为绝对目录名"+file1.isAbsolute());
  64. System.out.println("file对象对应的文件目录是否可write: "+file1.canWrite());
  65. System.out.println("file对象对应的文件目录是否可read: "+file1.canRead());
  66. System.out.println("file对象对应的文件目录是否可Execute: "+file1.canExecute());
  67. }
  68. //获取的方法
  69. public static void getMehtod(){
  70. File file = new File("E:\\file2.txt");
  71. File dir = new File("abc");
  72. System.out.println("获取抽象路径名转化为路径名字字符串:"+file.getPath());//E:\file2.txt
  73. System.out.println("获取此File对象对应的绝对路径名:"+file.getAbsolutePath());//E:\file2.txt
  74. System.out.println("获取此File对象的所对应目录(最后一级子目录(绝对路径))的父目录名:"+file.getParent());//E:\
  75. System.out.println("获取此File对象最后修改时间:"+file.lastModified());//1405853667765,修改日期的毫秒数
  76. }
  77. //相当于重命名剪切
  78. public static void renameFile() throws IOException{
  79. File f1 = new File("D:\\file.txt");
  80. File f2 = new File("E:\\file2.txt");
  81. System.out.println("f1重命名为f2的名字"+f1.renameTo(f2));
  82. //System.out.println("f2重命名为f1的名字"+f2.renameTo(f1));
  83. }
  84.  
  85. //列出根目录的全部内容
  86. public static void listRoots(){
  87. File[] files = File.listRoots();
  88. for(File file:files){
  89. System.out.println("列出根目录:"+file);
  90. }
  91. }
  92. //列出指定的目录的全部内容,包括隐藏文件,文件夹的名字和文件的名字
  93. public static void listDemo(){
  94. File f = new File("d:\\");
  95. System.out.println("获取D盘的可用空间"+f.getFreeSpace());
  96. System.out.println("获取D盘的可用于虚拟机的空间"+f.getUsableSpace());
  97. System.out.println("获取D盘的总容量"+f.getTotalSpace());
  98. String[] files = f.list();
  99. for(String file:files){
  100. System.out.println("列出根目录:"+file);
  101. }
  102. }
  103. //列出指定的目录的全部内容,包括隐藏文件,文件夹的名字和文件的名字
  104. public static void listFileterDemo(){
  105. File f = new File("d:\\");
  106. String[] files = f.list();
  107. for(String file:files){
  108. System.out.println("列出根目录:"+file);
  109. }
  110. }
  111. //列出指定的目录的全部内容,包括隐藏文件,文件夹的名字和文件的名字,使用 File[] listFiles()
  112. //返回值为一个File对象
  113. public static void listFileDemo(){
  114. File f = new File("d:\\");
  115. File[] files = f.listFiles();
  116. for(File file:files){
  117. System.out.println("列出根目录:"+file.getName());
  118. }
  119. }
  120. /**
  121. * 列出指定目录下,后缀为.java的文件,使用方法String[] list(FilenameFilter filter)
  122. */
  123. public static void ListFileFileter(){
  124. File f = new File("E:"+File.separator+"workspace"+File.separator+"IOTest");
  125. String[] files = f.list(new FilenameFilter() {
  126.  
  127. @Override
  128. public boolean accept(File dir, String name) {
  129. // TODO Auto-generated method stub
  130. //System.out.println("dir:"+dir+"name....."+name);//说明dir表示指定目录,name表示指定目录的名称
  131. return name.endsWith(".java");//通过匿名内部类的返回值来控制指定目录下面的文件和文件夹的显示
  132. }
  133. });
  134. System.out.println(files.length);
  135. //遍历指定目录下面的文件和目录
  136. for(String file:files){
  137. System.out.println(file);
  138. }
  139. }
  140.  
  141. }
 

java基础知识回顾之javaIO类--File类的更多相关文章

  1. java基础知识回顾之javaIO类--File类应用:过滤器接口FilenameFilter和FileFilter

    FilenameFilter和FileFilter都是用来过滤文件,例如过滤,以.jpg或者.java结尾的文件,通过看他们的源码:通过使用File类中String[] list(FilenameFi ...

  2. java基础知识回顾之javaIO类--File类应用:获取指定目录下面的指定扩展名的文件,将文件的绝对路径写入到目的文件当中

    /** * File文件综合应用 * 需求:获取指定目录下面,指定扩展名的文件,将文件的绝对路径写到文本文件当中. *  * 思路:1.需要深度遍历.--递归 * 2.遍历的过程中过滤指定扩展名的文件 ...

  3. java基础知识回顾之javaIO类--File类应用:递归深度遍历文件

    代码如下: package com.lp.ecjtu.File.FileDeepList; import java.io.File; public class FileDeepList { /** * ...

  4. java基础知识回顾之javaIO类--File类应用:删除带内容的目录

    /** * 深度删除一个带内容的目录 * 原理:必须从里往外删除,需要深度遍历 * @author Administrator * */ public class FileDeleteList { / ...

  5. java基础知识回顾之javaIO类---FileWriter和FileReader

    FileWriter类的构造方法定义如下: 1.public FileWriter(File file)throws IOException 字符流的操作比字节流操作好在一点,就是可以直接输出字符串了 ...

  6. java基础知识回顾之javaIO类--RandomAccessFile类

    java.io 类 RandomAccessFile java.lang.Object java.io.RandomAccessFile1.该类不是IO流中的子类.2.该类既能读又能写.3.该对象内部 ...

  7. java基础知识回顾之javaIO类--java序列化和反序列化

    /** *  * 一:理解序列化反序列化及其应用 * 序列化:把堆内存的对象转化成字节流的过程. * 反序列化:把字节流序列恢复重构成对象的过程. * 对象的序列化的用途:1.把对象的字节序列持久化, ...

  8. java基础知识回顾之javaIO类总结

    java IO体系图 IO流的操作规律总结: 1,明确体系: 数据源:InputStream ,Reader 数据汇:OutputStream,Writer 2,明确数据:因为数据分两种:字节,字符. ...

  9. java基础知识回顾之javaIO类---BufferedInputStream和BufferedOutputStream

    MP3的复制过程: package com.lp.ecjtu; import java.io.BufferedInputStream; import java.io.BufferedOutputStr ...

随机推荐

  1. 从基础知识到重写Spring的Bean工厂中学习java的工厂模式

    1.静态工厂模式其他对象不能直接通过new得到某个类,而是通过调用getInstance()方法得到该类的对象这样,就可以控制类的产生过程.顺带提一下单例模式和多例模式:  单例模式是指控制其他对象获 ...

  2. 使用DriverManager获取数据库连接的一个小改进

    由于使用DriverManager获取数据库连接时,由于DriverManager实现类中有一段静态代码块,可以直接注册驱动,且可以同时管理多个驱动程序 所以当换数据库连接时需要指定不同的数据库,那么 ...

  3. 浅析 GRUB 如何加载 linux kernel

    前言 对于 GRUB 的加载流程,网上绝大部分都是写对 menu.lst, grub.cfg 这些 GRUB 配置文件的编写流程,就像是写脚本语言一样,用些关键字就能让 PC机能正确启动桌面 Linu ...

  4. eclipse juno版本中没用 ant

    下载了谷歌提供的Android集成开发工具ADT,里面封装了Eclipse,但是很奇怪的是竟然没有Ant插件在里面 标准的Eclipse一般都是内置集成了Ant的. 然后到eclipse的plugin ...

  5. 如何开启MYSQL远程连接权限

    开启MYSQL远程连接权限 //建议设置固定IP mysql> GRANT ALL PRIVILEGES ON *.* TO root@"8.8.8.8" IDENTIFIE ...

  6. hibernate知识点理解

    1.只有业务逻辑层出现的问题? 1.切换数据库麻烦 2.sql编写起来麻烦 3.我们的程序员不需要关注数据库,只希望关心业务本身 2.hibernate的好处 1.程序员只关心业务逻辑,使角色更加清楚 ...

  7. 利用ajax在javascript中获取后台的值

    <script type="text/javascript"> function login() { var sa = WebForm1.Hello().value; ...

  8. [JQuery]学习总结

    1. Jquery 选择多个class 如何精确匹配 $("div[class='class1 class2']").css({ "margin-bottom" ...

  9. C++中的struct和class的区别

    C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能.struct能包含成员函数吗? 能!struct能继承吗? 能!!stru ...

  10. ORA-15221: ASM operation requires compatible.asm of 11.2.0.0.0 or higher

    昨天在做存储迁移的时候,对ASM磁盘组的东西进行操作时,出现了如标题的错误.经查资料,发现原因如下:     如磁盘组是使用asmca图形化工具创建,则compatible.asm默认设置就已经为11 ...