类 File
File是指文件和目录路径名的抽象表示形式。
1,何为文件:
标准文件(txt doc mp3...)
目录文件(文件夹)
虚拟内存文件
2,File类中有可以创建文件的 createNewFile()方法,在创建新文件的时候需要try{} catch(){}因为可能会抛出异常;也有可以判断文件是否是一个标准文件的方法isFile();这些防抖都在java.io的输入输出包中,我们可以直接创建一个文件对象后 再来 调用
3,使用File类来测试:
package file0521; import java.io.File; public class FileDemo { public static void main(String[] args) { //获取文件的路径 String path = "abc\\a.txt"; //用对象表示可以操作对象 File file = new File(path); //创建文件夹 boolean b=file.mkdirs(); System.out.println(b); //获取绝对路径 String path1 = file.getAbsolutePath(); //File path1 = file.getAbsoluteFile(); System.out.println("绝对路径 :"+path1); //获取相对路径 String path2 = file.getPath(); System.out.println("相对路径 :"+path2); //获取文件的名称 String name=file.getName(); System.out.println("getName:"+name); long len = file.getFreeSpace(); System.out.println("getfree:"+len); } }
运行结果 false 绝对路径 :E:\java\文件的处理\abc\a.txt 相对路径 :abc\a.txt getName:a.txt getfree:114963243008
分析:String path = "abc\\a.txt";是先获取这个路径 \\是分隔符号
创建File的对象,将路径作为其参数;由于文件夹已经是存在的所以返回为false;
文件的描述;使用字符串表示文件的路径
使用对象表示对象
绝对路径:从根磁盘开始计算的路径
相对路径:某一文件相对于当前文件的路径
后面的应该能看懂了;
2,使用File来判断输入的路径是文件还是文件夹?
思路分析:
a,写一个方法,将需要所有关的全部写入到这个方法中封装起来
b,创建File的对象并将路径传入其作为参数
c,判断路径是否存在
d,如果存在就保存在数组中
f,判断数组中是否为空
e,遍历数组
G,如果是文件就+1
h,入伏哦是文件夹就+1,文件夹中如果还有文件夹就调用递归
代码如下:
package file0521; /** * 编写一个统计文件标准文件的个数 * @author Administrator * */ import java.io.*; public class TestFile { public static void main(String[] args) { String path = "F:\\java开发实例1200"; int count =countFile(path); System.out.println("文件有"+count+"个"); } static int result= 0; public static int countFile(String path){ //创建file的对象 File file = new File(path); //判断路径是否存在 if(!file.exists()){ System.out.println("提供的路径不存在!"); return 0; } //将的得到的路径存储到数组中 File[] fs =file.listFiles(); //判断得到的是否是一个文件 if(fs==null){ System.out.println("提供的路径不是一个标准文件"); return 0; } //遍历数组 for(int i =0;i<fs.length;i++){ File f = fs[i]; String str = f.getAbsolutePath(); if(f.isFile()){ result++; System.out.println("找到文件"+str); }else if(f.isDirectory()){ //调用递归来处理 result +=countFile(str); } } return result; } }
运算结果: 文件有240489911个
递归;程序调用自身的编程技巧称为递归,就是自己调用自己的方法等,递归有时候可以用循环来代替,
4,任务:统计文件夹的子文件统计一个文件夹的类型,位子,大小,最后一次修改的时间
(第一版)分析:将文件夹和文件的判断写入一个static方法中,将共同的属性又写一个静态的方法,然后分别条用属性的方法
package file0521; import java.io.*; /** * * @author * 统计文件文件或者文件夹的属性 * */ public class Demofile { public static void main(String[] args) { String path = "E:\\c语言\\c 练习\\interface.cpp"; wenjian(path); } public static void wenjian(String path) { File file = new File(path); // 文件是否存在 // boolean f1 = file.exists(); if (file.exists()) { // 判断是不是一个isFile(); if (file.isFile()) { System.out.println("文件!!!"); shuxing(file); } else if(file.isDirectory()){ System.out.println("文件夹!!"); shuxing(file); }else{ System.out.println("类型无法判断!!!"); } } else { System.out.println("文件不存在!请重新输入路径"); } } public static void shuxing(File file) { long len= file.length(); System.out.println("文件的长度"+len); //最后一次修改的时间 long lasttime = file.lastModified(); System.out.println("最后一次修改的时间"+lasttime); //是否隐藏 boolean f3 =file.isHidden(); System.out.println("是否隐藏"+f3); //是否可写 boolean f4 = file.canRead(); System.out.println("是否可读"+f4); //是否可读 boolean f5=file.canWrite(); System.out.println("是否可读"+f5); //获取绝对路径 String str1 = file.getAbsolutePath(); System.out.println("获取绝对路径"+str1); //获取文件的名称 String name=file.getName(); System.out.println("获取文件的名称"+name); //返回空闲的空间 long freespace = file.getFreeSpace(); System.out.println("返回空闲的空间"+freespace); } }
运行结果:(没有得到文件及文件夹的个数) 文件!!! 文件的长度2900 最后一次修改的时间1395579617531 是否隐藏false 是否可读true 是否可读true 获取绝对路径E:\c语言\c 练习\interface.cpp 获取文件的名称interface.cpp 返回空闲的空间114963243008
5,任务:统计文件夹的子文件统计一个文件夹的类型,位子,大小,最后一次修改的时间(本方法可以判别文件夹和文件的个数,但是没有都会判断 其属性,导致运行结果非常乱)
分析:将文件夹和文件的判断写入一个static方法中,在方法中判断文件和文件夹的个数,将共同的属性又写一个静态的方法,然后分别条用属性的方法
代码如下:
package file0521; import java.io.File; public class Filezuoye { static int count;//文件的个数 static int dir;//目录的个数 static long size;//大小 public static void main(String[] args) { String path ="C:\\Users\\Administrator\\Desktop\\html"; shuxing(path); System.out.println("统计完毕,共有" + count + "个文件"); System.out.println("共有" + dir + "个文件夹"); System.out.println("总大小" + size + "B"); } public static void shuxing(String path){ File file = new File(path); if(!file.exists()){ System.out.println("这不是一个文件!"); return; } //将得到的子文件保存到数组里面 File[] f =file.listFiles(); if(f==null){ System.out.println("不是正确的路径"); } for(int i = 0;i<f.length;i++){ File fs=f[i]; //显示获取到的路径 String str = fs.getAbsolutePath(); //如果是文件 if(fs.isFile()){ count++; //累加获取到的文件的大小 size = size + fs.length(); System.out.println("文件的路径 : " + str); same(file); }else if(fs.isDirectory()){ dir++; //如果是文件夹就调用用递归来重新统计 shuxing(str); same(file); }else{ } } } public static void same(File file){ //最后一次修改的时间 long lasttime = file.lastModified(); System.out.println("最后一次修改的时间"+lasttime); //是否隐藏 boolean f3 =file.isHidden(); System.out.println("是否隐藏"+f3); //是否可写 boolean f4 = file.canRead(); System.out.println("是否可读"+f4); } }
运行结果: 文件的路径 : C:\Users\Administrator\Desktop\html\webpage\css\text.css 最后一次修改的时间1399284088057 是否隐藏false 是否可读true 最后一次修改的时间1399284108953 是否隐藏false 是否可读true 文件的路径 : C:\Users\Administrator\Desktop\html\webpage\images\ad1.gif 最后一次修改的时间1399284035123 是否隐藏false 是否可读true 文件的路径 : C:\Users\Administrator\Desktop\html\webpage\images\arrow_list.gif 最后一次修改的时间1399284035123 是否隐藏false 是否可读true 文件的路径 : C:\Users\Administrator\Desktop\html\webpage\images\banner.jpg 最后一次修改的时间1399284035123 是否隐藏false 是否可读true 文件的路径 : C:\Users\Administrator\Desktop\html\webpage\images\footbg.jpg 最后一次修改的时间1399284035123 是否隐藏false 是否可读true 文件的路径 : C:\Users\Administrator\Desktop\html\webpage\images\link1.gif 最后一次修改的时间1399284035123 是否隐藏false 是否可读true 文件的路径 : C:\Users\Administrator\Desktop\html\webpage\images\link2.gif 最后一次修改的时间1399284035123 是否隐藏false 是否可读true 文件的路径 : C:\Users\Administrator\Desktop\html\webpage\images\navbg.jpg 最后一次修改的时间1399284035123 是否隐藏false 是否可读true 文件的路径 : C:\Users\Administrator\Desktop\html\webpage\images\navbg2.jpg 最后一次修改的时间1399284035123 是否隐藏false 是否可读true 文件的路径 : C:\Users\Administrator\Desktop\html\webpage\images\titlebg.jpg 最后一次修改的时间1399284035123 是否隐藏false 是否可读true 文件的路径 : C:\Users\Administrator\Desktop\html\webpage\images\title_nt_1.jpg 最后一次修改的时间1399284035123 是否隐藏false 是否可读true 最后一次修改的时间1399284108953 是否隐藏false 是否可读true 文件的路径 : C:\Users\Administrator\Desktop\html\webpage\index.html 最后一次修改的时间1399284108953 是否隐藏false 是否可读true 最后一次修改的时间1400502634106 是否隐藏false 是否可读true 文件的路径 : C:\Users\Administrator\Desktop\html\网页.zip 最后一次修改的时间1400502634106 是否隐藏false 是否可读true 统计完毕,共有13个文件 共有3个文件夹 总大小53794B
结果分析:运行的结果每次都会调用属性,有多少个文件盒文件夹就会调用多少次;导致程序的可读性较差
相关推荐
在Java编程中,获取文件或文件夹的大小以及文件个数是常见的操作,尤其是在处理文件上传、存储管理和性能监控等场景。以下将详细介绍如何通过Java实现这些功能。 首先,我们来探讨如何获取单个文件的大小。在Java中...
除了基本的文件属性,Java还提供了其他高级功能,如遍历目录、读取文件内容、重命名文件等。例如,如果你需要列出指定目录下的所有文件和子目录,可以使用`list()`或`listFiles()`方法: ```java File directory = ...
### Java创建和删除文件夹与文件的知识点 #### 一、引言 在Java编程语言中,对文件系统的操作是一项非常基础且重要的功能。本文档将详细介绍如何使用Java来创建和删除文件夹以及文件,包括具体的实现代码和注意事项...
在Java编程中,统计文件夹大小是一项常见的任务,特别是在处理大量数据或者文件系统操作时。在JDK 7及以上版本中,Java引入了新的`java.nio.file`包,提供了更高效且灵活的方式来处理文件和目录。这个功能实现利用了...
我们可以创建`File`对象来代表一个具体的文件或目录,然后通过这个对象获取文件的各种属性,如创建时间、修改时间以及文件大小等。 对于文件夹内的文件按照时间排序,我们可以利用`File`类的`lastModified()`方法,...
通过以上介绍可以看出,在Java中,利用`java.io.File`类可以轻松地完成创建和删除文件及文件夹的操作。需要注意的是,对于删除文件夹的操作,如果文件夹非空,则需要先递归删除其中的所有文件和子文件夹后才能删除该...
在Java编程中,遍历文件夹内的文件是一项常见的任务,特别是在处理文件系统操作时。这个话题涉及到了Java的I/O(输入/输出)流、文件系统API和递归概念。以下是对这一主题的详细讲解: 首先,Java提供了一个强大的`...
在Java 7中引入了新的文件I/O API,即`java.nio.file`包,这使得开发人员能够更方便地操作文件系统,并且可以通过这些API获取文件的元数据,包括创建时间。 ##### 示例代码 以下是一个使用Java 7及以上版本来获取...
首先,我们需要引入Java的`java.io`包,因为它包含了处理文件操作的所有基本类,如`File`、`FileInputStream`、`FileOutputStream`和`FileUtils`(如果使用Apache Commons IO库)。下面是一段基础的代码示例,展示如何...
- 使用 `java.io.File` 类来创建并操作文件或目录对象。 - 如果该目录不存在,则通过调用 `mkdir()` 方法来创建新的目录。 #### 1.2 创建文件 ```java public static void newFile(String filePathAndName, String...
在JDK 7及以上版本中,Java提供了一种更加高效且灵活的方式来删除文件,包括递归删除整个文件夹及其子文件,这主要通过`java.nio.file`包中的`Files`类和`SimpleFileVisitor`类来实现。下面我们将详细探讨如何实现这...
1. **`java.io.File`类**:这是Java标准库中的一个非常重要的类,用于封装文件路径,并提供一系列与文件相关的操作方法。 2. **文件路径**:在Windows操作系统中,文件路径通常以盘符加冒号开头(例如 `C:\`),而在...
File类是Java中最基本的文件操作类,可以用来修改文件和文件夹权限。下面是一个示例代码: ```java File dirFile = new File(dirPath); dirFile.setReadable(true, false); dirFile.setExecutable(true, false); dir...
除了基本的文件操作,我们还经常需要处理文件夹的操作,例如复制、移动、枚举文件夹中的所有文件等。 **复制文件夹示例**: ```java import java.io.*; public class CopyFolder { public static void copy...
在复制文件或文件夹时,我们通常会用到`File`类和`FileInputStream`与`FileOutputStream`这两个输入输出流类。 1. **`File`类**:代表文件或者目录路径名的抽象表示。它提供了一些方法来创建、删除、重命名文件或...
总结来说,Java的FTPClient类为我们提供了一种强大且方便的方式来与FTP服务器交互,包括获取文件大小、文件夹属性,以及执行各种FTP命令。了解并熟练运用这些功能,可以极大地提高我们在开发过程中处理文件传输的...
ame()); tOut.putArchiveEntry(tarEntry);...通过引入该库,我们可以轻松地在 Java 程序中实现文件和文件夹的压缩与解压缩功能。在实际开发中,注意错误处理、资源管理以及安全性等方面,以确保程序的健壮性和安全性。
Java的IO操作是Java编程中不可或缺的一部分,它允许程序与外部存储设备进行交互,如读取文件、写入文件、创建文件夹等。在Java中,`java.io`包提供了大量的类和接口来支持这些功能。 首先,我们来看如何创建一个新...
在 Java 中,实现复制文件或文件夹需要使用 File 类和流操作。下面将详细介绍如何实现复制文件或文件夹的步骤和相关知识点。 复制文件 复制文件的算法相对简单,可以使用缓冲流提高读写数据的效率。下面是复制文件...