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的测试代码:

public class FileDemo {
public static void main(String[] args) throws IOException {
//createFileMethod();
listRoots();
}
//创建文件
public static void createFileMethod(){
File file = new File("file.txt");
try {
boolean b = file.createNewFile();
System.out.print(b);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//创建临时文件
public static void createTempFileMethod(){
File dir = new File("D:\\");
try {
File b = File.createTempFile("test", ".tmp",dir);//使用指定目录的方法
System.out.print(b.getAbsolutePath());
File b1 = File.createTempFile("tmp2", null);//使用不指定目录的构造方法
System.out.print(b1.getAbsolutePath());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//创建目录
public static void createDirMethod(){
File dir = new File("d:"+File.separator+"dfr"+File.separator+"ddd");
File dir1 = new File("d:"+File.separator+"dff"+File.separator+"ddd");
boolean b = dir.mkdirs();//可以递归的创建不存在的目录
boolean b1 = dir1.mkdir();//创建目录,不能递归,只能创建一级目录
System.out.println(b);
System.out.println(b1);
} //删除文件
public static void deleteFileMethod(){
File file = new File("file.txt");
try {
boolean b = file.createNewFile();
System.out.print(b);
file.deleteOnExit();
file.delete();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//判断文件对象或者目录是否是文件或者目录时候,必须判断该文件是否存在
public static void IsDirOrFileMethod() throws IOException{
File file = new File("a.txt");
File file1 = new File("d:"+File.separator+"hhh");
file.createNewFile();
file1.mkdir();
System.out.println("是否存在"+file.exists());
System.out.println("是否是文件"+file.isFile());
System.out.println("是否是目录"+file.isDirectory());
System.out.println("是否是隐藏"+file.isHidden());
System.out.println("目录是否为绝对目录名"+file1.isAbsolute());
System.out.println("file对象对应的文件目录是否可write: "+file1.canWrite());
System.out.println("file对象对应的文件目录是否可read: "+file1.canRead());
System.out.println("file对象对应的文件目录是否可Execute: "+file1.canExecute());
}
//获取的方法
public static void getMehtod(){
File file = new File("E:\\file2.txt");
File dir = new File("abc");
System.out.println("获取抽象路径名转化为路径名字字符串:"+file.getPath());//E:\file2.txt
System.out.println("获取此File对象对应的绝对路径名:"+file.getAbsolutePath());//E:\file2.txt
System.out.println("获取此File对象的所对应目录(最后一级子目录(绝对路径))的父目录名:"+file.getParent());//E:\
System.out.println("获取此File对象最后修改时间:"+file.lastModified());//1405853667765,修改日期的毫秒数
}
//相当于重命名剪切
public static void renameFile() throws IOException{
File f1 = new File("D:\\file.txt");
File f2 = new File("E:\\file2.txt");
System.out.println("f1重命名为f2的名字"+f1.renameTo(f2));
//System.out.println("f2重命名为f1的名字"+f2.renameTo(f1));
} //列出根目录的全部内容
public static void listRoots(){
File[] files = File.listRoots();
for(File file:files){
System.out.println("列出根目录:"+file);
}
}
//列出指定的目录的全部内容,包括隐藏文件,文件夹的名字和文件的名字
public static void listDemo(){
File f = new File("d:\\");
System.out.println("获取D盘的可用空间"+f.getFreeSpace());
System.out.println("获取D盘的可用于虚拟机的空间"+f.getUsableSpace());
System.out.println("获取D盘的总容量"+f.getTotalSpace());
String[] files = f.list();
for(String file:files){
System.out.println("列出根目录:"+file);
}
}
//列出指定的目录的全部内容,包括隐藏文件,文件夹的名字和文件的名字
public static void listFileterDemo(){
File f = new File("d:\\");
String[] files = f.list();
for(String file:files){
System.out.println("列出根目录:"+file);
}
}
//列出指定的目录的全部内容,包括隐藏文件,文件夹的名字和文件的名字,使用 File[] listFiles()
//返回值为一个File对象
public static void listFileDemo(){
File f = new File("d:\\");
File[] files = f.listFiles();
for(File file:files){
System.out.println("列出根目录:"+file.getName());
}
}
/**
* 列出指定目录下,后缀为.java的文件,使用方法String[] list(FilenameFilter filter)
*/
public static void ListFileFileter(){
File f = new File("E:"+File.separator+"workspace"+File.separator+"IOTest");
String[] files = f.list(new FilenameFilter() { @Override
public boolean accept(File dir, String name) {
// TODO Auto-generated method stub
//System.out.println("dir:"+dir+"name....."+name);//说明dir表示指定目录,name表示指定目录的名称
return name.endsWith(".java");//通过匿名内部类的返回值来控制指定目录下面的文件和文件夹的显示
}
});
System.out.println(files.length);
//遍历指定目录下面的文件和目录
for(String file:files){
System.out.println(file);
}
} }
 

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. [Guava源码分析]Ordering:排序

    我的技术博客经常被流氓网站恶意爬取转载.请移步原文:http://www.cnblogs.com/hamhog/p/3876466.html,享受整齐的排版.有效的链接.正确的代码缩进.更好的阅读体验 ...

  2. CentOS6.5升级手动安装gcc4.8.2

    一.简易安装 操作环境 CentOS6.5 64bit,原版本4.4.7,不能支持C++11的特性~,希望升级到4.8.2 不能通过yum的方法升级,需要自己手动下载安装包并编译 1.1 获取安装包并 ...

  3. 通过inotify监控linux文件系统变化

    http://www.mjmwired.net/kernel/Documentation/filesystems/inotify.txt http://www.ibm.com/developerwor ...

  4. SQL允许远程访问

    1.打开sqlserver对象资源管理器 右键 方面 常规 服务器配置 RemoteAccessEnabled true RemoteDacEnabled  true 2.打开SQL SERVER管理 ...

  5. PHP操作MongoDB简明教程(转)

    转自:http://blog.sina.com.cn/s/blog_6324c2380100ux2m.html MongoDB是最近比较流行的NoSQL数据库,网络上关于PHP操作MongoDB的资料 ...

  6. js中(function(){…})()立即执行函数写法理解(转载oschina)

    ( function(){…} )()和( function (){…} () )是两种javascript立即执行函数的常见写法,最初我以为是一个括号包裹匿名函数,再在后面加个括号调用函数,最后达到 ...

  7. android 在标题栏加上按钮

    public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowF ...

  8. 下拉刷新--第三方开源--PullToRefresh

    效果预览图: 下载地址:https://github.com/chrisbanes/Android-PullToRefresh activity_main.xml: <RelativeLayou ...

  9. 关于字符串 “*****AB**C*D*****” 中前缀、后缀和中间 '*' 的处理

    一.删除前缀 '*' #include<iostream> #include<cstdio> using namespace std; //主函数 int main() { ] ...

  10. Java方法重载

    Java允许一个类中定义多个方法,只要参数列表不同就行了.如果同一个类中包含了两个或者两个以上的方法的方法名相同,但形参列表不同,则被称为方法重载. /* 参数类型不同的重载 */ public cl ...