直入正题
代码(自己可以复制去看)
里面主要 介绍了文件的File类的新建、删除、重命等操作,以及File文件的属性方法
package com.gx.iodemo;
import java.awt.BufferCapabilities.FlipContents;
import java.io.File;
import java.io.IOException;
/**
* File 文件类
* File类是Java.io包下代表与平台(系统)无关的文件和目录。
* 可以新建文件(目录)、删除文件(目录)、重命名文件(目录),(还可以做到类似移动文件效果)
* 但是不能读取文件内容。
* @author en
*
*/
public class Demo01_File {
public static void main(String[] args) throws IOException {
// windows的路径 D:\目录\目录\ 由于\为转义字符 应该写为 D:\\目录\\目录\\
//linux或者unix的路径为 /Home/.....
//在Java支持将/当作平台无关的分隔符。
/*
* 1、pathSeparator与pathSeparatorChar与系统文件路径分隔有关
* 例如: F:\Java学习\文件操作与异常;G:\重装系统
* 其中的 “;” 为 “F:\Java学习\文件操作与异常” 和 “G:\重装系统” 两个不同路径的分隔符
* 两者的不同在于:pathSeparator被表示为一个字符串,如果此字符串只包含一个字符,则可用pathSeparatorChar来表示。
* 还有,pathSeparator、pathSeparatorChar是路径分隔符,在Window上是";",在Unix上是":"
*2、separator与separatorChar在同一个路径之下,相邻层级目录间或目录与文件间的分隔符有关
*例如: F:\Java学习\文件操作与异常其中的“\”为 “Java学习”和“文件操作与异常”两个相邻层级目录的分隔符
*两者的不同在于:separator被表示为一个字符串,如果此字符串只包含一个字符,则可用separatorChar来表示。
*还有,separator、separatorChar是名称分隔符,在Window上是"\",在Unix上是“/”
*
*/
//指的是分隔连续多个路径字符串的分隔符.例如:java -cp test.jar;abc.jar HelloWorld
System.out.println(File.pathSeparator);
//才是用来分隔同一个路径字符串中的目录的,例如:C:/Program Files/Common Files
System.out.println(File.separator);
//pathSeparator、pathSeparatorChar是路径分隔符,在Window上是";",在Unix上是":"
System.out.println(File.pathSeparatorChar);
System.out.println(File.separatorChar);
//访问文件名相关方法
File file=new File("E:/e");
System.out.println("文件(目录)名称:"+file.getName());
System.out.println("文件(目录)路径:"+file.getPath());
System.out.println("文件(目录)绝对路径:"+file.getAbsolutePath());
System.out.println("文件(目录)的父目录:"+file.getParent());
if (file.isDirectory()) {//是否是目录
String[] strings=file.list();//获取子文件和子目录
System.out.println("当前目录下的子文件和子目录");
for (String string : strings) {
System.out.println(string);
}
}
//创建文件
File file_2=new File("E:/e/123.txt");
System.out.println("文件是否存在"+file_2.exists());
System.out.println("是否创建成功文件:" +file_2.createNewFile());//创建文件
//创建文件夹
File file_1=new File("E:/e/b");
System.out.println("文件是否存在"+file_1.exists());
System.out.println("是否创建成功文件夹:" +file_1.mkdir());//新建子目录(即文件夹)//创建文件夹
//读写执行
System.out.println("是否可写:"+file_2.canWrite());
System.out.println("是否可读:"+file_2.canRead());
System.out.println("是否可执行:"+file_2.canExecute());
System.out.println("是否是目录:"+file_2.isDirectory());
System.out.println("是否可文件:"+file_2.isFile());
System.out.println("是否绝对路径:"+file_2.isAbsolute());
System.out.println("是否隐藏:"+file_2.isHidden());
//----创建一个文件
System.out.println("--------------------");
File file3=new File("D:\\test.txt");
System.out.println("创建文件:"+file3.createNewFile());
System.out.println("文件存在:"+file3.exists());
System.out.println("删除文件:"+file3.delete());
System.out.println("文件存在:"+file3.exists());
System.out.println("创建文件:"+file3.createNewFile());
System.out.println("文件大小:"+file3.length()+"字节");//
System.out.println("文件最后修改时间:"+file3.lastModified());
file3.renameTo(new File("E:\\z\\12\\test.txt"));//重命名 可以变相看做移动文件
//file3.deleteOnExit();//程序退出时删除文件
}
}
一个案例(根据对应路径循环获取路径下的 文件夹和文件)
package com.gx.iodemo;
import java.io.File;
/**
* 循环输出某路径下的文件夹和文件
*
* @author 星月
*
*/
public class Demo02_File {
public static void main(String[] args) {
File file=new File("E:\\Dev");//当前目录
printFile(file,0);
}
public static void printFile(File file,int count){
if (file.exists()) {//测试文件或目录是否存在
StringBuffer buffer=new StringBuffer();
if (count!=0) {
buffer.append("|");
}
for (int i = 0; i < count; i++) {
buffer.append("--");
}
if (file.isDirectory()) {//Directory目录 是否为目录
System.out.println(buffer.toString()+"["+file.getName()+"]");
File[] files=file.listFiles();//在这获取file文件下的 文件和文件夹 数组值
//(递归)为文件夹时,再次调用自身方法
for (File file2 : files) {
//达到效果为:循环第一次的文件夹下的数据,
//情况:1、是文件夹时,会再次重复类似的循环、
// 2、是文件时,直接输出
printFile(file2,count+1);
}
}
else{
System.out.println(buffer.toString()+">"+file.getName());
}
}
}
}