Java文件的基本操作知识点
提纲:
一:基本概念汇总:
1.学习文件操作的必要性:
2.文件操作的概念:
3.文件的概念:
4.选择文件存储的条件:
5.文件存储的特点:
6.文件的表示和访问:
二:File类的具体文件操作
1.File类的基本介绍:
2.File类的方法使用示例;
(1).File 对象代表文件路径:
(2).File类的常用方法:
(3).较为完整的文件操作示例: (4).显示某个目录下的所有文件示例:
(5)删除某个目录下的所有文件示例:
正文:
一:基本概念汇总:
1.学习文件操作的必要性:
在 IO 操作中,需要使用的数据源有很多,作为一个 IO 技术的初学者,从读写文件开始学习 IO 技术是一个比较好的选择。因为文件是一种常见的数据源,而且读写文件也是程序员进行 IO 编程的一个基本能力。
2.文件操作的概念:
在程序中经常需要将数据存储到文件中,也需要按照正确的格式来读取各种数据。
3.文件的概念:
文件 (File)是最常见的数据源之一,
4.选择文件存储的条件:
(1).对于数据的读写速度要求不高
(2).存储的数据量不是很大
5.文件存储的特点:
(1).存储在文件内部的数据是永久存储的,而内存中的数据在程序退出或计算机关机以后,数据就丢失了。
(2).在不同的存储介质中,文件中的数据都是以一定的顺序依次存储起来,在实际读取时由硬件以及操作系统完成对于数据的控制,保证程序读取到的数据和存储的顺序保持一致。
(3).文件的存储介质有很多,由于 IO 类设计时,从数据源转换为流对象的操作由 API 实现了,所以存储介质的不同对于程序员来说是透明的,和实际编写代码无关。
6.文件的表示和访问:
文件的路径+文件的全名.
(1) 绝对路径和相对路径
绝对路径:指完整路径.
好处:唯一指定文件.
缺点:受到的限制很大,且不能在不同的操作系统下运行。
相对路径:文件的部分路径.
好处:更通用地代表位置,增加灵活性。
注意:
代码中文件路径的书写形式:
(c:\\test\\Hello.java)或(c:/test/Hello.java),因为 ’\’ 是 Java 语言中的特殊字符。
static String
separator
与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。
("c:"+File.separator
+"test"+File.separator
+"Hello.java"),可以程序的跨平台.
(2) 文件名称
文件名称一般形式:“文件名 . 后缀名”。文件名表明文件作用,后缀名表明类型。
文件名称只是一个标示,方便使用,和实际存储的文件内容没有必然的联系。
系统自动关联后缀名和对应的程序便于打开文件。
编码时注意文件名的大小写和后缀名。
二:File类的具体文件操作
1.File类的基本介绍:
在java.io包中的File类,用来将文件或者文件夹封装成对象,方便对文件与文件夹的属性信息进行操作。
可以方便的代表文件的概念,以及存储一些对于文件的基本操作.
File 类的对象代表具体的文件路径,绝对路径,相对路径和文件夹(特殊的路径)均可以
2.File类的方法使用示例;
(1).File 对象代表文件路径
创建的文件对象示例:
方法:
public File(String pathname)
示例:
File f1 = new File(“d:\\test\\1.txt”);
File f2 = new File(“1.txt”);
File f3 = new File(“e:\\abc”);
方法:
public File(String parent, String child)
使用父路径和子路径结合,实现代表文件路径。
示例:
File f4 = new File(“d:\\test\\”,”1.txt”);
方法:
............
示例:
(2),File类的常用方法:
方法:
boolean createNewFile()
创建文件,
当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。
示例:
try {
boolean b = f3.createNewFile();
} catch (Exception e) {
e.printStackTrace();
}
作用:创建指定的文件。该方法只能用于创建文件,不能用于创建文件夹,且文件路径中包含的文件夹必须存在。
方法:
createTempFile(String prefix, String suffix)
在默认临时文件目录中创建一个空文件,使用给定前缀和后缀生成其名称。static
createTempFile(String prefix, String suffix, File directory)
在指定目录中创建一个新的空文件,使用给定的前缀和后缀字符串生成其名称。
示例:
//临时文件对象的创建
File tmpFile1 = File.createTempFile("####", "%%%%");
File tmpFile2 = File.createTempFile("ttttt", ".tmp", tempDir);
File tmpFile3 = File.createTempFile("$$$", " ", null);
方法:
void
deleteOnExit()
在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。
示例:
//临时文件对象的删除
tmpFile1.deleteOnExit();
tmpFile2.deleteOnExit();
tmpFile3.deleteOnExit();
(3).较为完整的文件操作示例:
import java.io.File;
/*
* 日期:2012-03-07
* 功能:演示File类的常用方法的使用
*
*/
public class FileDemo1 {
public static void main(String[] args) {
//
// File(String pathname)
// 通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
File f1 = new File("d:\\编程生成的文件1.txt");
//创建的文件的路径在哪儿呢?
//File f1 = new File("编程生成的文件1.txt");
File f2 = new File("d:\\编程创建的文件夹1");
File f3 = new File("d:\\编程创建的文件夹2\\创建父类不存在的文件夹1");
// File(File parent, String child)
// 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
// File(URI uri)
// 通过将给定的 file: URI 转换为一个抽象路径名来创建一个新的 File 实例。
//
//创建文件: boolean createNewFile()
// 当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。
try {
System.out.println("创建文件f1是否成功?..."+f1.createNewFile());
} catch (Exception e) {
e.printStackTrace();
}
//
//创建文件夹(父类存在):boolean mkdir()
//创建此抽象路径名指定的目录。
System.out.println("\n创建文件夹f2是否成功?..."+f2.mkdir());
//创建文件夹(父类不存在):boolean mkdirs()
//创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。
System.out.println("创建父类不存在的文件夹f3是否成功?..."+f3.mkdirs()+"\n");
//
// File getAbsoluteFile()
// 返回此抽象路径名的绝对路径名形式。
System.out.println("文件f1的绝对路径名形式是:" + f1.getAbsolutePath());
// String getName()
// 返回由此抽象路径名表示的文件或目录的名称。
System.out.println("文件f3的文件名是:" + f1.getName());
// String getParent()
// 返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null。
System.out.println("文件f1的父目录的路径名是:" + f1.getParent());
// boolean isDirectory()
// 测试此抽象路径名表示的文件是否是一个目录。
System.out.println("文件f1是否是目录?..." + f1.isDirectory());
// boolean isFile()
// 测试此抽象路径名表示的文件是否是一个标准文件。
System.out.println("文件f1是否是文件?..." + f1.isFile());
// long length()
// 返回由此抽象路径名表示的文件的长度。
System.out.println("文件f1的长度是:" + f1.length()+"\n");
//
//File(String parent, String child)
//根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
File f4 = new File("d:\\", "编程生成的文件2.txt");
//boolean exists()
// 测试此抽象路径名表示的文件或目录是否存在。
System.out.println("文件f4是否存在?..." + f4.exists()+"\n");
//
File f5 = new File("d:\\编程软件和工具");
// String[] list()
// 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。
String[] str = f5.list();
for (int i = 0; i < str.length; i++) {
System.out.println("获得当前文件夹f5下所有文件和文件夹名称..." + str[i]);
}
System.out.println();
// File[] listFiles()
// 返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。
File[] f6 = f5.listFiles();
for (int i = 0; i < f6.length; i++) {
System.out.println("文件f5下的文件对象有..." + f6[i]);
}
System.out.println();
//
//boolean renameTo(File dest)
//重新命名此抽象路径名表示的文件。
File f7 = new File("d:\\编程生成的文件3.txt");
System.out.println("修改文件f1的文件名是否成功?..."+f1.renameTo(f7));
//boolean setReadable(boolean readable)
//设置此抽象路径名所有者读权限的一个便捷方法。 设置文件为只读
System.out.println("设置文件f7的属性为只读是否成功?..."+f7.setReadOnly());
}
}
(4)显示某个目录下的所有文件示例:
import java.io.*;
/*
* 日期:2012-03-08
* 功能:
* 显示某个文件夹下的所有文件和文件夹,原理是输出当前名称,
* 然后判断当前File对象是文件还是文件夹,如果则获得该文件夹下
* 的所有子文件和子文件夹,并递归调用该方法实现。
*/
public class ShowAllFileDemo {
public static void main(String[] args) {
File f1 = new File("d:\\亿度空间下载");
ShowAllFile(f1);
}
// 递归函数的定义
public static void ShowAllFile(File f1) {
File[] f2 = f1.listFiles();
for (int i = 0; i < f2.length; i++) {
System.out.println("文件对象有:..." + f2[i]);
if (f2[i].isDirectory()) {
ShowAllFile(f2[i]);
}
}
System.out.println();
}
}
(5)删除某个目录下的所有文件示例:
import java.io.*;
/*
* 日期:2012-03-08
* 功能:
* 删除某个文件夹下的所有文件和文件夹,原理是判断是否是文件,
* 如果是文件则直接删除,如果是文件夹,则获得该文件夹下所有的子文件和子文件夹,
* 然后递归调用该方法处理所有子文件和子文件夹,然后将空文件夹删除。
*
*/
public class DeleteAllFileDemo {
public static void main(String[] args) {
File f1 = new File("d:\\常实验报告 - 副本");
DeleteAllFile(f1);
}
// 递归函数的定义
public static void DeleteAllFile(File f1) {
File[] f2 = f1.listFiles();
for (int i = 0; i < f2.length; i++) {
if (f2[i].isFile()) {
f2[i].delete();
}
if (f2[i].isDirectory()) {
DeleteAllFile(f2[i]);
}
f1.delete();
}
}
}