您的位置:首页 > 编程语言 > Java开发

【Dongle】【Java】基础(六)之常用类——File

2016-12-04 17:38 447 查看
       File,顾名思义,就是文件类。最常用的就是获取一个文件,通过在视频上学习,了解了一些基本的相关知识。

       想要获取路径,对于目录的分隔符肯定是必须要了解的。我用的是windows系统,所以系统的路径分隔符是“\”,但是在代码中”\"代表了转义符,所以如果只是输入一个反斜杠,就不能正确读取路径。而这里我总结了三种路径的方法:

第一种就是上面提到的,双反斜杠“\\"可以正确读取路径。

第二种是正斜杠“/”,也是windows系统中获取路径的方法。程序会自动转换成反斜杠获取系统路径。

第三种是利用文件的separate值获取系统路径。

       

       第一种方法在windows系统里都可以正确实现功能,但是如果将程序换到linux系统下时,反斜杠写法就行不通了。因为linux系统的系统分隔符是正斜杠。所以,java将这一部分想到了,所以在file类中添加了separate值,用于获取当前系统的路径分隔符。

下面分析一个关于file类的java文件代码实例:

import java.io.*;
public class TestFile {
public static void main(String[] args){
String separator = File.separator;//获取当前系统的路径分隔符
String filename = "myfile.txt";//文件名
String directory = "mydir1" + separator + "mydir2";//文件路径
//String directory = "mydir1/mydir2";//正斜扛自动转换成反斜扛
//String directory = "mydir1\\mydir2";//两个反斜扛才能表示一个斜杠,但是这种只适应windows系统,如果在linux系统下就不能成功,因为系统的路径分隔符不同,所以使用separator获取当前系统的路径分隔符最为合适
File f = new File(directory,filename);//通过路径和文件名查找文件
if (f.exists()) {//判断文件是否存在,如果存在
System.out.println("文件名: " + f.getAbsolutePath());//获取文件的绝对路径
System.out.println("文件大小:" + f.length());//获取文件的大小
}else{//如果不存在文件
f.getParentFile().mkdirs();//则在当前目录中创建在路径中的一系列目录:即在J2SE下,创建文件夹mydir1;在mydir1下创建mydir2文件夹;并定位到mydir2文件夹内。如果存在系列目录,则直接弥补未存在的子目录,或者直接等待创建文件(父路径是当前class文件的父路径)
//如果是加入了包,则会直接找包的父目录
try {
f.createNewFile();//创建文件(在mydir2文件夹下创建文件myfile.txt)
System.out.println("文件不存在,现已成功创建!");
} catch (IOException e) {//如果创建出错
e.printStackTrace();//输出错误内容
}
}
}
}


从上面了解到,

获取文件的方法是File f = new File("路径”,"文件名(包含扩展名)").
得到文件的绝对路径:getAbsolutePath(),读取的是路径加文件名(含扩展名)
获取文件大小:f.length()
判断文件是否存在:f.exists()
创建路径下的系列目录:f.getParentFile().mkdirs(),这是在父级目录里面创建你所需要的目录,如果目录已经存在,就不需要再重新创建了,都是系统自动识别的。这里需要说明一点,这里的父目录是程序运行文件的父目录,即class文件的父目录。但是如果java文件被定义在某个包内,则这个父目录就是包的父目录了,而不再是class文件的父目录。
创建文件:f.creatNewFile(),f指你需要的路径。

还有一个必不可少的额方法,就是获取文件的子文件或子目录:listFiles。例如:

import java.io.*;

public class FileList {
public static void main(String[] args) {
File f = new File("d:/编程软件");
tree(f,1);
}

private static void tree(File f,int level) {
String preStr ="";
for (int i=0; i<level; i++) {
preStr += " ";//子目录缩进四位
}
File[] childs = f.listFiles();//当前目录下所有的孩子们
for (int i=0; i<childs.length; i++) {
//System.out.println(childs[i].getName());//获取孩子的文件名
System.out.println(preStr + childs[i].getName()+" "+childs[i].length());//获取孩子的文件名
if (childs[i].isDirectory()) {//判断孩子是否存在孩子
tree(childs[i],level + 1);//存在孩子,递归tree方法
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息