java 基础---IO File类
Posted 周无极
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 基础---IO File类相关的知识,希望对你有一定的参考价值。
Java File类
Java文件类以抽象的方式代表文件名和目录路径名。该类主要用于文件和目录的创建、文件的查找和文件的删除等。
File对象代表磁盘中实际存在的文件和目录。通过以下构造方法创建一个File对象。
字段摘要
static String pathSeparator //与系统有关的路径分隔符,为了方便,它被表示为一个字符串。
static char pathSeparatorChar / /与系统有关的路径分隔符。
static String separator //与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。
static char separatorChar //与系统有关的默认名称分隔符。
构造方法摘要
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 转换为一
方法摘要
boolean canExecute() 测试应用程序是否可以执行此抽象路径名表示的文件。
boolean canRead() 测试应用程序是否可以读取此抽象路径名表示的文件。
boolean canWrite() 测试应用程序是否可以修改此抽象路径名表示的文件。
int compareTo(File pathname) 按字母顺序比较两个抽象路径名。
boolean createNewFile() 当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。
static File createTempFile(String prefix, String suffix) 在默认临时文件目录中创建一个空文件,使用给定前缀和后缀生成其名称。
static File createTempFile(String prefix, String suffix, File directory) 在指定目录中创建一个新的空文件,使用给定的前缀和后缀字符串生成其名称。
boolean delete() 删除此抽象路径名表示的文件或目录。
void deleteOnExit() 在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。
boolean equals(Object obj) 测试此抽象路径名与给定对象是否相等。
boolean exists() 测试此抽象路径名表示的文件或目录是否存在。
File getAbsoluteFile() 返回此抽象路径名的绝对路径名形式。
String getAbsolutePath() 返回此抽象路径名的绝对路径名字符串。
File getCanonicalFile() 返回此抽象路径名的规范形式。
String getCanonicalPath() 返回此抽象路径名的规范路径名字符串。
long getFreeSpace() 返回此抽象路径名指定的分区中未分配的字节数。
String getName() 返回由此抽象路径名表示的文件或目录的名称。
String getParent() 返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null。
File getParentFile() 返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null。
String getPath() 将此抽象路径名转换为一个路径名字符串。
long getTotalSpace() 返回此抽象路径名指定的分区大小。
long getUsableSpace() 返回此抽象路径名指定的分区上可用于此虚拟机的字节数。
int hashCode() 计算此抽象路径名的哈希码。
boolean isAbsolute() 测试此抽象路径名是否为绝对路径名。
boolean isDirectory() 测试此抽象路径名表示的文件是否是一个目录。
boolean isFile() 测试此抽象路径名表示的文件是否是一个标准文件。
boolean isHidden() 测试此抽象路径名指定的文件是否是一个隐藏文件。
long lastModified() 返回此抽象路径名表示的文件最后一次被修改的时间。
long length() 返回由此抽象路径名表示的文件的长度。
String[] list() 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。
String[] list(FilenameFilter filter) 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录。
File[] listFiles() 返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。
File[] listFiles(FileFilter filter) 返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。
File[] listFiles(FilenameFilter filter) 返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。
static File[] listRoots() 列出可用的文件系统根。
boolean mkdir() 创建此抽象路径名指定的目录。
boolean mkdirs() 创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。
boolean renameTo(File dest) 重新命名此抽象路径名表示的文件。
boolean setExecutable(boolean executable) 设置此抽象路径名所有者执行权限的一个便捷方法。
boolean setExecutable(boolean executable, boolean ownerOnly) 设置此抽象路径名的所有者或所有用户的执行权限。
boolean setLastModified(long time) 设置此抽象路径名指定的文件或目录的最后一次修改时间。
boolean setReadable(boolean readable) 设置此抽象路径名所有者读权限的一个便捷方法。
boolean setReadable(boolean readable, boolean ownerOnly) 设置此抽象路径名的所有者或所有用户的读权限。
boolean setReadOnly() 标记此抽象路径名指定的文件或目录,从而只能对其进行读操作。
boolean setWritable(boolean writable) 设置此抽象路径名所有者写权限的一个便捷方法。
boolean setWritable(boolean writable, boolean ownerOnly) 设置此抽象路径名的所有者或所有用户的写权限。
String toString() 返回此抽象路径名的路径名字符串。
URI toURI() 构造一个表示此抽象路径名的 file: URI。
URL toURL() 已过时。 此方法不会自动转义 URL 中的非法字符。建议新的代码使用以下方式将抽象路径名转换为 URL:首先通过 toURI 方法将其转换为 URI,然后通过 URI.toURL 方法将 URI 装换为 URL。
package com.bdqn.io; import java.io.File; /** * 两个常量 * 1、路径分隔符 ; * 2、名称分隔符 /(windows) /(linux 等) * * * @author Administrator * */ public class Demo01 { /** * @param args */ public static void main(String[] args) { System.out.println(File.pathSeparator); System.out.println(File.separator); //路径表示形式 String path ="E:\\xp\\test\\2.jpg"; path="E:"+File.separator+"xp"+File.separator+"test"+File.separator+"2.jpg"; //推荐方式 path="E:/xp/test/2.jpg"; System.out.println(path); } } /* ; E:/xp/test/2.jpg */
package com.bdqn.io; import java.io.File; /** * 相对路径与绝对路径构造 File对象 * 1、相对路径 File(String parent, String child) ==>File("E:/xp/test","2.jpg") File(File parent, String child) ==> File(new File("E:/xp/test"),"2.jpg") 2、绝对路径 File(String name); * @author Administrator * */ public class Demo02 { /** * @param args */ public static void main(String[] args) { String parentPath ="E:/xp/test"; String name ="2.jpg"; //相对路径 File src =new File(parentPath,name); src =new File(new File(parentPath),name); //输出 System.out.println(src.getName()); System.out.println(src.getPath()); //绝对路径 src =new File("E:/xp/test/2.jpg"); System.out.println(src.getName()); System.out.println(src.getPath()); //没有盘符: 以 user.dir构建 src =new File("test.txt"); src =new File("."); System.out.println(src.getName()); System.out.println(src.getPath()); System.out.println(src.getAbsolutePath()); } } /* 2.jpg E:\xp\test\2.jpg 2.jpg E:\xp\test\2.jpg . . D:\workspace\demos\. */
package com.bdqn.io; import java.io.File; import java.io.IOException; /** * 常用方法: 1、文件名 getName() 文件名、路径名 getPath()路径名 getAbsoluteFile() 绝对路径所对应的File对象 getAbsolutePath() 绝对路径名 getParent() 父目录 ,相对路径的父目录,可能为null 如. 删除本身后的结果 2、判断信息 exists() canWrite() canRead() isFile() isDirectory() isAbsolute():消除平台差异,ie以盘符开头,其他以/开头 3、长度 字节数 不能读取文件夹的长度 length() 4、创建、删除 createNewFile() 不存在创建新文件,存在返回false delete() 删除文件 static createTempFile(前缀3个字节长,后缀默认.temp) 默认临时空间 staticcreateTempFile(前缀3个字节长,后缀默认.temp,目录) deleteOnExit() 退出虚拟机删除,常用于删除临时文件 * @author Administrator * */ public class Demo03 { /** * @param args */ public static void main(String[] args) { test1(); test2(); try { test3(); } catch (IOException e) { e.printStackTrace(); System.out.println("文件操作失败"); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //创建删除文件 public static void test3() throws IOException, InterruptedException{ //createNewFile() 不存在创建新文件 //String path="E:/xp/test/con"; //con系统关键字 String path="E:/xp/test/200.jpg"; //String path="E:/xp/test/1.jpg"; File src =new File(path); if(!src.exists()){ boolean flag =src.createNewFile(); System.out.println(flag?"成功":"失败"); } //删除文件 boolean flag =src.delete(); System.out.println(flag?"成功":"失败"); //static createTempFile(前缀3个字节长,后缀默认.temp) 默认临时空间 //static createTempFile(前缀3个字节长,后缀默认.temp,目录) File temp= File.createTempFile("tes", ".temp",new File("e:/xp/test")); Thread.sleep(10000); temp.deleteOnExit(); //创建临时文件,10秒后删除 } //2、判断信息 //3、长度 length() public static void test2(){ //String path ="2.txt"; String path="E:/xp/test/200.jpg"; //String path="E:/xp/test/200.jpg"; File src =new File(path); //是否存在 System.out.println("文件是否存在:"+src.exists()); //是否可读 写 canWrite() canRead() System.out.println("文件是否可写"+src.canWrite()); System.out.println("============"); //isFile() //isDirectory() if(src.isFile()){ System.out.println("文件"); }else if(src.isDirectory()){ System.out.println("文件夹"); }else{ System.out.println("文件不存在"); } System.out.println("是否为绝对路径"+src.isAbsolute()); System.out.println("长度为:"+src.length()); } //1、名称 public static void test1(){ //File src =new File("E:/xp/test/2.jpg"); //建立联系 File src =new File("2.txt"); System.out.println(src.getName()); //返回名称 System.out.println(src.getPath()); //如果是绝对路径,返回完整路径,否则相对路径 System.out.println(src.getAbsolutePath());//返回绝对路径 System.out.println(src.getParent());//返回上一级目录,如果是相对,返回null } } /* 2.txt 2.txt D:\workspace\demos\2.txt null 文件是否存在:false 文件是否可写false ============ 文件不存在 是否为绝对路径true 长度为:0 成功 成功 */
package com.bdqn.io; import java.io.File; import java.io.FilenameFilter; import java.io.IOException; /** * 5、操作目录 mkdir() 创建目录,必须确保 父目录存在,如果不存在,创建失败 mkdirs() 创建目录,如果父目录链不存在一同创建 list() 文件|目录 名字符串形式 listFiles() static listRoots() 根路径 * @author Administrator * */ public class Demo04 { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { String path ="E:/xp/test/"; String path2 ="E:/xp/test/a.java"; File src2=new File(path2); src2.createNewFile(); File src =new File(path); //文件夹 if(src.isDirectory()){ //存在并且为目录 System.out.println("======子目录|文件名==="); String[] subNames =src.list(); for(String temp:subNames){ //输出是test文件夹下,文件夹的集合和文件集合 System.out.println(temp); } System.out.println("=====子目录|文件File对象===="); File[] subFiles =src.listFiles(); for(File temp:subFiles){ //返回的是绝对路径文件夹和文件的集合 System.out.println(temp.getAbsolutePath()); } System.out.println("=====子文件.java对象===="); /** * 命令设计模式 * 过滤 .java 文件 * * */ subFiles =src.listFiles(new FilenameFilter(){ @Override /** * dir 代表src */ public boolean accept(File dir, String name) { //System.out.println(dir.getAbsolutePath()); return new File(dir,name).isFile()&&name.endsWith(".java"); } }); for(File temp:subFiles){ System.out.println(temp.getAbsolutePath()); } } } public static void test1(){ String path ="E:/xp/test/parent/p/test"; File src =new File(path); //mkdirs() 创建目录,如果父目录链不存在一同创建 src.mkdirs(); } } /*======子目录|文件名=== a.java adsf adsf.java asdf.txt parent =====子目录|文件File对象==== E:\xp\test\a.java E:\xp\test\adsf E:\xp\test\adsf.java E:\xp\test\asdf.txt E:\xp\test\parent =====子文件.java对象==== E:\xp\test\a.java */
package com.bdqn.io; import java.io.File; import java.util.Arrays; /** * 输出 子孙级目录|文件的名称集合(绝对路径) * 1、listFiles() * 2、递归 * * static listRoots() 根路径 * @author Administrator * */ public class Demo05 { /** * @param args */ public static void main(String[] args) { String path ="E:/xp/test"; File parent =new File(path); printName(parent); /*File[] roots =File.listRoots(); System.out.println(Arrays.toString(roots)); for(File temp:roots){ //printName(temp); }*/ } /** * 输出路径 */ public static void printName(File src){ if(null==src || !src.exists()){ return ; } System.out.println("++"+src.getAbsolutePath()); if(src.isDirectory()){ //文件夹 for(File sub:src.listFiles()){ printName(sub); } } } } /*++E:\xp\test ++E:\xp\test\a.java ++E:\xp\test\adsf ++E:\xp\test\adsf.java ++E:\xp\test\asdf.txt ++E:\xp\test\parent ++E:\xp\test\parent\p ++E:\xp\test\parent\p\test */
以上是关于java 基础---IO File类的主要内容,如果未能解决你的问题,请参考以下文章
JAVA基础-输入输出:1.编写TextRw.java的Java应用程序,程序完成的功能是:首先向TextRw.txt中写入自己的学号和姓名,读取TextRw.txt中信息并将其显示在屏幕上。(代码片