package javaStudy;
/**
*
* @author zhaocx1
*
*/
import java.io.File;//导入IO流包中的类包
/*
* File类用来将文件或者文件夹封装成对象,方便对文件于文件夹的属性信息进行操作,File对象可以作为参数传递给流的构造函数。
* 流也可以操作文件,只是操作文件中的数据,不能操作文件的增删,也不能操作文件夹。
*/
public class FileDemo1 {
public static void main(String[] args) {
consMethod();// 调用静态方法
}
public static void consMethod() {// 定义静态方法
// 将a.txt封装成file对象。可以将已有的和为出现的文件或者文件夹封装成对象。
// 创建File对象
File f = new File("a.txt");
//创建文件夹并创建文件夹的子目录
File f2 = new File("d:\\abc", "b.txt");
File d = new File("d:\\abc");
File f3 = new File(d, "c.txt");
sop("f==" + f);//打印文件文件夹目录
sop("f2==" + f2);
sop("f3==" + f3);
File f4 = new File("d:" + File.separator + "abc" + File.separator
+ "zzz" + File.separator + "a.txt");
} // 跨平台的分割符。
public static void sop(Object obj) {// 将一个静态的打印方法封装到sop中,其它对象可以调用该方法
System.out.println(obj);
}
}
package javaStudy;
/**
*
* @author zhaocx1
*
*/
/*
* File类常见方法:
* 1.创建。
* boolean createNewFile(); 在指定位置创建文件,如果该文件已经存在,则不创建,返回false.
* 和输出流不一样,输出流对象一建立创建对象,而且文件已经存在,会覆盖。
*
* boolean mkdir(); 创建文件夹,只能创建到二级目录。
* boolean mkdirs(); 创件多级文件夹。
*
* 2.删除。
* boolean delete();删除失败,返回false。
* void deleteOnExit(); 在程序退出时删除指定文件。
*
* 3.判断。
* boolean exists():文件是否存在。
* isFile();
* isDirectory();
* isHidden();
* isAbsolute();是否是绝对路径
* 4.获取信息。
* getName();
* getPath();
* getParent();
*
* getAbsolutePath();
* lastModified();
* long length();
*/
import java.io.*;
public class FileDemo2 {
public static void main(String[] args) throws IOException {// 函数上抛出异常
method_3();// 调用静态方法
}
public static void method_5()// 定义静态方法
{
//创建File对象
File f1 = new File("e:\\File类.java");
File f2 = new File("e:\\File概念.java");
sop("rename==" + f1.renameTo(f2));//把
}
public static void method_4() {
File f = new File("abc\\file.txt");
sop("path==" + f.getPath());// 路径
sop("path==" + f.getAbsolutePath());// 绝对路径
sop("parent==" + f.getParent());// 该方法返回的是绝对路径中的父目录。如果获取的是相对路径,返回是null
// 如果相对路径中有上一层目录那么该目录就是返回结果。
}
public static void method_3() throws IOException {
File f = new File("file.txt");
f.createNewFile();
// f.mkdir();
// 在判断文件对象是否是文件或者目录时,必须要先判断文件对象封装内容是否存在。
// 通过exists判断。
sop("dir==" + f.isDirectory());// 表示的是一个目录
sop("file==" + f.isFile());// 是否是文件夹
sop(f.isAbsolute());// 是否是绝对路径
}
public static void method_2() {
File f = new File("file.txt");
// sop("exists=="+f.exists());
// sop("execute==" + f.canExecute());是否能执行。
// 创建文件夹
File dir = new File("abc\\kkk\\a\\ss\\ddd\\qq");
sop("mkdir==" + dir.mkdirs());
}
public static void method_1() throws IOException {
File f = new File("file.txt");
// sop("create=="+f.createNewFile());
sop("delete:" + f.delete());
// .deleteOnExit(); 虚拟机退出时删除文件。
}
public static void sop(Object obj) {
System.out.println(obj);
}
}
package javaStudy;
/**
*
* @author zhaocx1
*
*/
import java.io.File;//导入IO流包中的类包
import java.io.FilenameFilter;
public class FL {
public static void main(String[] args) {
File dir = new File("d:\\");// 指定到C盘目录下
String[] arr = dir.list(new FilenameFilter() {// 列出C盘目录先得所有文件的名称
public boolean accept(File dir, String name) {
// return true;}
return name.endsWith(".JPG");// 返回所有的图片
}
});
System.out.println("len=" + arr.length);// 列出查找指定文件的数量
for (String name : arr) {// 增强for循环,对指定目下的所有文件进行遍历,列出指定文件的名字
System.out.println(name);
}
// listDemo();
listRootsDemo();
}
public static void listDemo() {
File f = new File("e:\\");// list用于打印指定目录下文件的名称。
String[] names = f.list();// 调用list方法的file对象必须是封装了一个目录。该目录还必须存在。
for (String name : names) {// 增强for循环,对指定目下的所有文件进行遍历,列出指定文件的名字
System.out.println(name);
}
}
public static void listRootsDemo() {
File[] files = File.listRoots();// listRoots是列出指定目录下的根目录
for (File f : files) {// 增强for循环,对指定目下的所有文件进行遍历,列出指定文件的名字
System.out.println(f.length());// 输出打印所有根目录的数量
}
}
}
package javaStudy;
/**
*
* @author zhaocx1
*
*/
/*
* 列出指定目录下文件或者文件夹,包含子目录中的内容。
* 也就是列出指定目录下所有内容。
*
* 因为目录中还有目录,只要使用同一个列出目录功能的函数完成即可。
* 也就是函数自身调用自身,这种表现形式,或者变编程手法,成为递归。
*
* 递归注意事项:
* 1.限定条件。
* 2.注意递归的次数,尽量避免内存溢出。
*/
import java.io.File;//导入IO流包中的类包
public class ListFileDiGui {
public static void main(String[] args) {
File dir = new File("d:\\game");
showDir(dir, 0);
toBin(6);
int n = getSum(3);
System.out.println("n==" + n);
}
public static int getSum(int n) {
if (n == 1)
return 1;
return n + getSum(n - 1);
}
public static void toBin(int num) {
while (num > 0) {
System.out.println(num % 2);
num = num / 2;
}
}
public static String getLevel(int level) {
StringBuilder sb = new StringBuilder();
for (int x = 0; x < level; x++) {
sb.append(" ");
}
return sb.toString();
}
public static void showDir(File dir, int level) {
File[] files = dir.listFiles();//列出指定目录下的所有文件名称
level++;
for (int x = 0; x < files.length; x++) {
if (files[x].isDirectory())
showDir(files[x], level);
else
System.out.println(getLevel(level) + files[x]);
}
}
}
</pre><pre name="code" class="java">package javaStudy;
/**
*
* @author zhaocx1
*
*/
/*
* 删除一个带内容的目录。
* 删除原理:
* 在Window中,删除目录从里面往外删除的。
* 既然是从里往外删除,就需要用到递归。
*/
import java.io.File;//导入IO流包中的类包
public class DeleteFileDemo {
public static void main(String[] args) {
File dir = new File("e:\\abc");
removeDir(dir);
}
public static void removeDir(File dir) {//定义静态方法
File[] files = dir.listFiles();//列出指定目录下的所有文件名称
for (int x = 0; x < files.length; x++) {
if (files[x].isDirectory())//判断是否是目录
removeDir(files[x]);//调用所在函数中的函数
else
System.out.println(files[x].toString() + "="
+ files[x].delete());
}
System.out.println(dir + "=" + dir.delete());
}
}
package javaStudy;
/**
*
* @author zhaocx1
*
*/
/*
* 将一个指定目录下的java文件的绝对路径,存储到一个文本文件中。
* 建立一个java文件列表文件。
*
* 思路:
* 1.对指定的目录进行递归。
* 2.获取递归过程所有的java文件的路径。
* 3.将这些路径存储到集合中。
* 4.将集合中的数据写入到一个文件中。
*/
import java.io.File;//导入IO流包中的类包
import java.util.ArrayList;//导入集合包中的类包
import java.util.List;
public class NewFileDemo {
public static void main(String[] args)
{
File dir=new File("d:\\java");//指定一个目录,对该指定的目录进行递归
List<File> list=new ArrayList<File>();//定义一个集合容易用于存储数据
fileToList(dir,list);//调用静态函数
System.out.println(list.size());//输出打印目录的个数
}
public static void fileToList(File dir,List<File> list)
{
File[] files=dir.listFiles();//获取指定目录下所有绝对路径文件的名称
for(File file:files)//利用增强for循环对所有文件进行递归
{
if(file.isDirectory())//判断递归的文件是否是目录
fileToList(file,list);//调用所在函数中的函数进行递归
else
{
if(file.getName().endsWith(".java"))//判断是否以指定的扩展名命名
list.add(file);//符合条件添加到集合中
}
System.out.println("file="+file);//输出打印文件名称
}
}
}