网站解析是什么意思,作品集怎么做网页,中国工程网亿美,做网站现在什么最赚钱文章目录 文件操作和IO文件系统操作File介绍属性构造方法方法 代码演示前四个listmkdirrenameTo 文件操作和IO
文件系统操作
创建文件,删除文件,创建目录,重命名… Java中有一个类,可以帮我们完成上述操作. 这个类叫做File类.
File介绍
属性 这个表格描述了文件路径的分隔符… 文章目录 文件操作和IO文件系统操作File介绍属性构造方法方法 代码演示前四个listmkdirrenameTo 文件操作和IO
文件系统操作
创建文件,删除文件,创建目录,重命名… Java中有一个类,可以帮我们完成上述操作. 这个类叫做File类.
File介绍
属性 这个表格描述了文件路径的分隔符,由于这个分隔符在不同的系统上是不一样的.我们就可以通过上面的属性来做到平台无关化.
构造方法 在这些构造方法中,我们主要来谈第二个版本File(String pathname),使用String作为路径,我们可以往里面传入绝对路径,也可以传入相对路径.也可以指定一个不存在的路径.如果传入的是一个不存在的路径那么后续对该路径执行的操作如创建文件或目录会创建一个新的文件或目录。
方法
下面列出了一系列关于File的操作. getParent()可以返回File对象的父目录文件路径. getName()可以返回纯文件名称,也就是demo.txt getPath()可以返回对象的文件路径.也就是C:\test\demo.txt getAbsolutePath() 可以返回 File 对象的绝对路径 getCanonicalPath() 可以返回 File 对象的修饰过的绝对路径 exists()可以判断 File 对象描述的文件是否存在. isDirectory() 判断 File 对象代表的文件是否是一个目录 isFile()判断 File 对象代表的文件是否是一个普通文件. 需要注意的是,在计算机的视角下目录(文件夹)也是文件. createNewFile()顾名思义,创建一个文件 delete()根据 File 对象,删除该文件,删除成功后返回true deleteOnExit()这个删除比较特殊,它不是立即删除,而是等到程序执行结束,才删除.(稍后删除) list()针对目录,返回File对象代表的目录下的所有文件名. listFiles()针对目录,返回File对象代表的目录下的所有文件,以File对象表示.(相比于上一个,这个用的比较多) mkdir()创建目录,只能创建一级目录. mkdirs()可以递归的创建多级目录. mkdir()的时候,如果中间目录不存在,则无法创建成功;mkdirs()可以解决这个问题 renameTo(File dest)重命名也可以视为我们平时的剪切、粘贴操作. canRead()判断用户是否对文件有读权限 canWrite()判断用户是否对文件有写权限
代码演示
前四个
package javaEE.fileIO;import java.io.File;
import java.io.IOException;public class D {public static void main(String[] args) throws IOException {// 由于Windows默认使用反斜杠(\)来作为文件路径的分隔符// 一定要使用双反斜杠来表示 \\ // 我们也可以使用/来作为文件路径的分隔符,Windows也支持.File file new File(C:\\test\\demo.txt);System.out.println(file.getParent());// 打印File对象的父目录文件路径.System.out.println(file.getName());// 打印纯文件名称System.out.println(file.getPath());// 打印对象的文件路径System.out.println(file.getAbsolutePath());// 打印File对象的绝对路径// getCanonicalPath这个会抛出IOException异常System.out.println(file.getCanonicalPath());// 打印File对象的修饰过的绝对路径}
}此时我们发现,后三个打印出来的路径一样. 这是咋回事呢? 这主要是因为我们针对File对象进行构造的时候,就是拿绝对路径进行构造的. File file new File(C:\\test\\demo.txt); 如果你是绝对路径构造的,那么getPath()得到的就是绝对路径,getAbsolutePath()得到的也是绝对路径,getCanonicalPath()得到的还是绝对路径.
我们把代码中的绝对路径改成相对路径,再次运行一下.
package javaEE.fileIO;import java.io.File;
import java.io.IOException;public class D {public static void main(String[] args) throws IOException {// 由于Windows默认使用反斜杠(\)来作为文件路径的分隔符// 一定要使用双反斜杠来表示 \\ . 我们也可以使用/来作为文件路径的分隔符,Windows也支持.File file new File(./demo.txt);System.out.println(file.getParent());// 打印File对象的父目录文件路径.System.out.println(file.getName());// 打印纯文件名称System.out.println(file.getPath());// 打印对象的文件路径System.out.println(file.getAbsolutePath());// 打印File对象的绝对路径// getCanonicalPath这个会抛出IOException异常System.out.println(file.getCanonicalPath());// 打印File对象的修饰过的绝对路径}
}我们都知道使用相对路径时,需要指定一个基准路径.那么以下代码的基准路径是谁呢? java File file new File(./demo.txt); 当我们通过IDEA运行程序时,基准路径就是idea打开的这个项目所在的路径. 把代码和运行结果放到一起对照一下,更容易看出区别. 关于IOException异常的触发情况: 硬盘空间不够没有权限 list
package javaEE.fileIO;import java.io.File;
import java.util.Arrays;public class E {public static void main(String[] args) {File file new File(.);// 打印当前目录下所包含的内容System.out.println(Arrays.toString(file.list()));}
}当前目录
运行结果
直接使用list/listFiles只能看到当前目录中的内容. 如果想看到某个目录下,所有的目录和文件,就需要递归来完成.
package javaEE.fileIO;import java.io.File;public class F {public static void main(String[] args) {File file new File(.);scan(file);}private static void scan(File currentDir) {// 判断当前文件是不是目录if(!currentDir.isDirectory()) {// 不是目录,直接返回return;}// 列出目录中包含的内容File[] files currentDir.listFiles();// 判断目录是否为空if(files null || files.length 0) {// 为空,直接返回return;}// 打印当前文件路径System.out.println(currentDir.getAbsolutePath());// 遍历整个目录for (File file:files) {if(!file.isDirectory()) {// 不是目录,打印出绝对路径System.out.println(file.getAbsolutePath());} else {//是目录,继续递归scan(file);}}}
}
运行结果
mkdir
package javaEE.fileIO;import java.io.File;public class G {public static void main(String[] args) {File f new File(./abc);boolean ok f.mkdir();System.out.println(ok);}
} renameTo
renameTo改名.
package javaEE.fileIO;import java.io.File;public class H {public static void main(String[] args) {File srcFile new File(./abc);File destFile new File(./abc1234);boolean ok srcFile.renameTo(destFile);System.out.println(ok);}
}可以看到abc成功改名了. renameTo还可以用来移动文件,跟剪切的作用很像.
package javaEE.fileIO;import java.io.File;public class I {public static void main(String[] args) {// 将def这个文件从abc1234文件夹中,移动到当前文件夹中File srcFile new File(./abc1234/def);File destFile new File(./def);boolean ok srcFile.renameTo(destFile);System.out.println(ok);}
}
移动文件,就是修改文件所在的路径,文件路径的修改,也可以视为是一种重命名.
没有演示的方法都十分简单,这里就不再赘述了~
本文到这里就结束啦~