java使用File类创建一个文件
这个类的用处只涉及到文件的创建。修改和删除,并不对文件内部的内容进行其他操作。
public class F {
public static void main(String[] args) {
File file = new File("E:"+File.separator+"text.txt");
if (file.exists()) {
file.delete();
}else {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
结果:
以上操作是针对文件的建立与删除,从代码可以看出,当文件不存在时,就创建文件,如果文件存在,就删除该文件,由于该操作时有虚拟机间接完成的,所以该操作存在延迟,多线程操作时应该注意。
linux和windows文件路径分隔符是不一样的,这里使用File.separator这个符号代替分隔符可以完美解决。
该代码只有再目录存在的时候才能正常运行,否则会抛出异常,但是多数情况下,需要的目录是不存在的,需要程序自行创建,例如:
File file = new File("E:"+File.separator+"F"+File.separator+"text.txt");
File类中有一个getParentFile()方法,该方法放回创建文件的父路径,也就是该文件的目录,再判断该目录是否存在,不存在则创建目录:
代码修改为如下所示:
public class F {
public static void main(String[] args) {
File file = new File("E:"+File.separator+"F"+File.separator+"text.txt");
if(!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
if (file.exists()) {
file.delete();
}else {
try {
file.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
java遍历文件目录
如下
显示eclipse的安装目录:
import java.io.File;
public class ReadFile {
public static void main(String[] args) {
File file = new File("E:" + File.separator + "java-2019-06" );
print(file);
}
public static void print(File file) {
if (file.isDirectory()) {
File[] listFiles = file.listFiles();
if (listFiles != null) {
for (int i = 0; i < listFiles.length; i++) {
print(listFiles[i]);
}
}
}
System.out.println(file);
}
原理:
如果目录时可读的,则用递归的方式列出子文件。
根据需要,直接更换File中需要读取的目录路径即可