文件的简单操作
在java里,随处可见类。File类就是对文件操作的类。File的对象就代表一个文件或一个目录。下面我们要讨论的是File对文件操作的基本方法。
文件分为目录文件,标准文件和虚拟内存文件,当然我们主要是对前面两种文件进行操作。
下面我们分条细道:
1)创建对象
File(File 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。 |
File(String 通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。 |
File(String 根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。 |
File(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对象去创建文件或文件夹
boolean |
createNewFile() 当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。 |
static |
createTempFile(String 在默认临时文件目录中创建一个空文件,使用给定前缀和后缀生成其名称。 |
static |
createTempFile(String 在指定目录中创建一个新的空文件,使用给定的前缀和后缀字符串生成其名称。 |
举例 如:
- <span style=""> </span><span style=""> temFile.createNewFile();
- File.createTempFile("测试文件102", ".txt")
- File.createTempFile("测试文件102", ".txt" ,new File "D:\\javastudy")).getAbsolutePath());
- </span>
效果明显哦。
注意:当文件已经存在时 就不再会创建新的文件了。后面两个函数都是File类的静态函数,可以直接用类名调用,其返回值是File类型的。而且我们生成的文件名后面会带有比较长的随机数。
3)创建文件夹
- <span style="">//在当前目录下创建测试文件夹101
- //mkdir()只能在已经存在的目录中创建创建文件夹。
- //mkdirs()可以在不存在的目录中创建文件夹。诸如:a\\b,既可以创建多级目录。
- File temFile = new File("测试文件夹222");
- temFile.mkdir();
- //temFile.mkdirs();
- System.out.println(temFile.getAbsolutePath());</span>
3)设置文件的属性
- <span style="">temFile.setReadable(false);
- temFile.setWritable(true);
- temFile.setReadOnly();</span>
4)对文件属性的判断
- <span style="">if(subFile[i].canExecute()){
- System.out.println(subFile[i].getAbsolutePath() + " 是 可执行的 ");
- }
- if(subFile[i].canRead()){
- System.out.println(subFile[i].getAbsolutePath() + " 是 可读的 ");
- }
- if(subFile[i].canWrite()){
- System.out.println(subFile[i].getAbsolutePath() + " 是 可写的 ");
- }</span>
- <span style=""> if(subFile[i].isAbsolute())
- System.out.println(subFile[i].getAbsolutePath() + " 是 一个绝对路径");
- if(subFile[i].isDirectory())
- System.out.println(subFile[i].getAbsolutePath() + " 是 一个目录");
- if(subFile[i].isFile())</span>
- <span style=""> System.out.println(subFile[i].getAbsolutePath() + " 是 一个文件");
- if(subFile[i].isHidden())
- System.out.println(subFile[i].getAbsolutePath() + " 是 一个隐藏文件");</span>
5)用于文件排序时的文件名首字母比较大小,返回值是int,为在字母表中排列的差。
- <span style="">//前者首字母减去后者 若果遇到的是中文首字母开头 呐结果可就大了
- System.out.println(subFile[i].getAbsolutePath()+" 与 "+subFile[0].getAbsolutePath()+" 的比较结果是: "+subFile[i].compareTo(subFile[0]));
- if(subFile[i].equals(subFile[0])){
- System.out.println(subFile[i].getAbsolutePath()+" 与 "+subFile[0].getAbsolutePath()+" 同一个");
- }</span>
6)输出文件路径的七种方法,注意返回值
- <span style="">//调用File里面的各种get方法返回文件或目录路径
- //七种输出路径大方式
- System.out.println("用getAbsoluteFile()返回文件或目录路径所输出的结果" + subFile[i].getAbsoluteFile());
- System.out.println("用getAbsolutePath()返回文件或目录路径所输出的结果" + subFile[i].getAbsolutePath());
- System.out.println("用getCanonicalFile()返回文件或目录路径所输出的结果" + subFile[i].getCanonicalFile());
- System.out.println("用getCanonicalPath()返回文件或目录路径所输出的结果" + subFile[i].getCanonicalPath());
- System.out.println("用toString()返回文件或目录路径所输出的结果" + subFile[i].toString());
- System.out.println("用subFile[i]直接返回文件或目录路径所输出的结果" + subFile[i]);
- System.out.println("用getPath()返回文件或目录路径所输出的结果" + subFile[i].getPath());</span>
7)输出文件的名字,父目录的名字
- <span style="">System.out.println("用getName()返回文件或目录路径的名字" + subFile[i].getName());
- System.out.println("用getParent()返回文件或目录路径的父目录" + subFile[i].getParent());
- System.out.println("用getParentFile()返回文件或目录路径的父目录" + subFile[i].getParentFile());</span>
8)得到该文件或目录路径未分配的字节数,文件或目录路径所指向的分区的大小,文件或目录路径所指向的分区上课用于此虚拟机的字节数
- <span style="">System.out.println("用getFreeSpace()返回该文件或目录路径未分配的字节数" + subFile[i].getFreeSpace());
- System.out.println("用getTotalSpace()返回文件或目录路径所指向的分区的大小" + subFile[i].getTotalSpace());
- System.out.println("用getUsableSpace()返回文件或目录路径所指向的分区上课用于此虚拟机的字节数" + subFile[i].getUsableSpace());</span>
9)得到其子目录
- <span style="">System.out.println("用length()函数返回文件或目录的长度" + subFile[i].length());
- System.out.println("用list()函数返回文件或目录中的目录 返回值为一个String" + subFile[i].list());
- System.out.println("用File中的静态函数listRoots()函数返回系统磁盘目录 返回值为一个File数组 我估计这里就应该是打印该数组的首地址" + File.listRoots()); </span>
10)对于最后一次修改时间的获得和修改
- <span style="">System.out.println( subFile[i] + "用lastModified()函数返回文件或目录最后一次修改的时间" + (new java.util.Date(subFile[i].lastModified())));
- //修改最后一次修改时间
- subFile[0].setLastModified(System.currentTimeMillis());</span>
- <span style="">//获得当前时间
- System.out.println(subFile[i] +"用setlastModified()函数修改时间后返回文件或目录最后一次修改的时间" + (new java.util.Date(subFile[i].lastModified())));</span>
11)修改文件名,删除文件
- <span style="">//修改文件名 可以跨目录
- if(temFile.renameTo(new File("D:/","NewNameFile")))
- System.out.println("重命名成功啦 快去看看");
- System.out.println(temFile.getAbsolutePath());</span>
- <span style="">//删除文件
- //如果此路径名表示一个目录,则该目录必须为空才能删除
- temFile.delete();
- //在虚拟机终止时删除
- temFile.deleteOnExit();</span>
结束语:通过File对象对文件或者是文件夹的操作基本上就是上面的那些啦。