File的基本操作

来源:互联网 发布:linux 线程 参数 编辑:程序博客网 时间:2024/05/21 06:13

            文件的简单操作

   在java里,随处可见类。File类就是对文件操作的类。File的对象就代表一个文件或一个目录。下面我们要讨论的是File对文件操作的基本方法。

   文件分为目录文件,标准文件和虚拟内存文件,当然我们主要是对前面两种文件进行操作。

   下面我们分条细道:

 1)创建对象

File(File parent, String child) 
根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。File(String pathname) 
通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。File(String parent, String child) 
根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。File(URI uri) 
通过将给定的 file: URI 转换为一个抽象路径名来创建一个新的 File 实例。

上面是API中的四种构造方法。

使用较为简单 如:

 File temFile = new File("D:/javastudy/测试文件101");

 File temFile = new File(new File("D:\\javastudy"), "测试文件101");
 File temFile = new File("D:\\javastudy", "测试文件101");
 现在我们的temFile就代表了D盘下javastudy的测试文件101(不管它是否存在)。

注意到一点:在java里表示路径时,\\和/是一个含义。

2)由File对象去创建文件或文件夹

booleancreateNewFile() 
当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。staticFilecreateTempFile(String prefix, String suffix) 
在默认临时文件目录中创建一个空文件,使用给定前缀和后缀生成其名称。staticFilecreateTempFile(String prefix, String suffix, File directory) 
在指定目录中创建一个新的空文件,使用给定的前缀和后缀字符串生成其名称。举例 如:
Java代码  收藏代码
  1. <span style="">  </span><span style=""> temFile.createNewFile();  
  2.    File.createTempFile("测试文件102"".txt")  
  3.    File.createTempFile("测试文件102"".txt" ,new File "D:\\javastudy")).getAbsolutePath());  
  4. </span>  

效果明显哦。

注意:当文件已经存在时 就不再会创建新的文件了。后面两个函数都是File类的静态函数,可以直接用类名调用,其返回值是File类型的。而且我们生成的文件名后面会带有比较长的随机数。

3)创建文件夹


  1. <span style="">//在当前目录下创建测试文件夹101   
  2. //mkdir()只能在已经存在的目录中创建创建文件夹。   
  3. //mkdirs()可以在不存在的目录中创建文件夹。诸如:a\\b,既可以创建多级目录。  
  4. File temFile = new File("测试文件夹222");  
  5. temFile.mkdir();  
  6. //temFile.mkdirs();  
  7. System.out.println(temFile.getAbsolutePath());</span>  

3)设置文件的属性


  1. <span style="">temFile.setReadable(false);  
  2. temFile.setWritable(true);  
  3. temFile.setReadOnly();</span>  

4)对文件属性的判断


  1. <span style="">if(subFile[i].canExecute()){  
  2.     System.out.println(subFile[i].getAbsolutePath() + "     是  可执行的 ");  
  3. }  
  4. if(subFile[i].canRead()){  
  5.     System.out.println(subFile[i].getAbsolutePath() + "     是  可读的 ");  
  6. }  
  7. if(subFile[i].canWrite()){  
  8.     System.out.println(subFile[i].getAbsolutePath() + "     是  可写的 ");  
  9. }</span>  

  1. <span style=""if(subFile[i].isAbsolute())  
  2.    System.out.println(subFile[i].getAbsolutePath() + "     是  一个绝对路径");  
  3.  if(subFile[i].isDirectory())  
  4.     System.out.println(subFile[i].getAbsolutePath() + "     是  一个目录");  
  5.  if(subFile[i].isFile())</span>  

  1. <span style="">  System.out.println(subFile[i].getAbsolutePath() + "     是  一个文件");     
  2.  if(subFile[i].isHidden())  
  3.    System.out.println(subFile[i].getAbsolutePath() + "     是  一个隐藏文件");</span>  

 5)用于文件排序时的文件名首字母比较大小,返回值是int,为在字母表中排列的差。


  1. <span style="">//前者首字母减去后者  若果遇到的是中文首字母开头 呐结果可就大了  
  2. System.out.println(subFile[i].getAbsolutePath()+"  与   "+subFile[0].getAbsolutePath()+" 的比较结果是: "+subFile[i].compareTo(subFile[0]));  
  3. if(subFile[i].equals(subFile[0])){  
  4.     System.out.println(subFile[i].getAbsolutePath()+"  与   "+subFile[0].getAbsolutePath()+" 同一个");  
  5. }</span>  

 6)输出文件路径的七种方法,注意返回值


  1. <span style="">//调用File里面的各种get方法返回文件或目录路径  
  2. //七种输出路径大方式  
  3. System.out.println("用getAbsoluteFile()返回文件或目录路径所输出的结果" + subFile[i].getAbsoluteFile());  
  4. System.out.println("用getAbsolutePath()返回文件或目录路径所输出的结果" + subFile[i].getAbsolutePath());  
  5. System.out.println("用getCanonicalFile()返回文件或目录路径所输出的结果" + subFile[i].getCanonicalFile());  
  6. System.out.println("用getCanonicalPath()返回文件或目录路径所输出的结果" + subFile[i].getCanonicalPath());  
  7. System.out.println("用toString()返回文件或目录路径所输出的结果" + subFile[i].toString());  
  8. System.out.println("用subFile[i]直接返回文件或目录路径所输出的结果" + subFile[i]);  
  9. System.out.println("用getPath()返回文件或目录路径所输出的结果" + subFile[i].getPath());</span>  

 7)输出文件的名字,父目录的名字


  1. <span style="">System.out.println("用getName()返回文件或目录路径的名字" + subFile[i].getName());  
  2. System.out.println("用getParent()返回文件或目录路径的父目录" + subFile[i].getParent());  
  3. System.out.println("用getParentFile()返回文件或目录路径的父目录" + subFile[i].getParentFile());</span>  

8)得到该文件或目录路径未分配的字节数,文件或目录路径所指向的分区的大小,文件或目录路径所指向的分区上课用于此虚拟机的字节数


  1. <span style="">System.out.println("用getFreeSpace()返回该文件或目录路径未分配的字节数" + subFile[i].getFreeSpace());  
  2. System.out.println("用getTotalSpace()返回文件或目录路径所指向的分区的大小" + subFile[i].getTotalSpace());  
  3. System.out.println("用getUsableSpace()返回文件或目录路径所指向的分区上课用于此虚拟机的字节数" + subFile[i].getUsableSpace());</span>  

9)得到其子目录


  1. <span style="">System.out.println("用length()函数返回文件或目录的长度" + subFile[i].length());  
  2. System.out.println("用list()函数返回文件或目录中的目录  返回值为一个String" + subFile[i].list());  
  3. System.out.println("用File中的静态函数listRoots()函数返回系统磁盘目录  返回值为一个File数组 我估计这里就应该是打印该数组的首地址" + File.listRoots()); </span>  

10)对于最后一次修改时间的获得和修改


  1. <span style="">System.out.println( subFile[i] + "用lastModified()函数返回文件或目录最后一次修改的时间" + (new java.util.Date(subFile[i].lastModified())));  
  2. //修改最后一次修改时间  
  3. subFile[0].setLastModified(System.currentTimeMillis());</span>  

  1. <span style="">//获得当前时间  
  2. System.out.println(subFile[i] +"用setlastModified()函数修改时间后返回文件或目录最后一次修改的时间" + (new java.util.Date(subFile[i].lastModified())));</span>  

11)修改文件名,删除文件


  1. <span style="">//修改文件名 可以跨目录  
  2. if(temFile.renameTo(new File("D:/","NewNameFile")))  
  3.     System.out.println("重命名成功啦  快去看看");  
  4. System.out.println(temFile.getAbsolutePath());</span>  

  1. <span style="">//删除文件  
  2. //如果此路径名表示一个目录,则该目录必须为空才能删除  
  3. temFile.delete();  
  4. //在虚拟机终止时删除  
  5. temFile.deleteOnExit();</span>  

结束语:通过File对象对文件或者是文件夹的操作基本上就是上面的那些啦。