课堂笔记--文件操作
来源:互联网 发布:excel统计重复数据 编辑:程序博客网 时间:2024/06/04 18:14
文件操作
文件类(File)
文件类(File)提供了一些方法可以用来操作文件和获取文件的信息,包括:更改文件名、删除文件、列出目录下的文件以及文件对象属性的描述信息等。该类的出现是对文件系统中的文件以及文件夹进行对象的封装,可以通过对象的思想来操作文件以及文件夹。
注意:Java把目录当做一种特殊的文件来处理。
构造函数
public File(String name);:将一个字符串路径(相对或者绝对)封装成File对象,该路径是可存在的,也可以是不存在。
public File(File parent,String child);通过将指定路径名字符创转换成为抽象路径名来创建一个新的File对象。
public File(String parent,String child);根据parent路径名字符串和child路径名字符串创建一个新的File对象。
特别的字段:
separator:平台相关的目录分隔符。
File file = new File("c:"+File.separator+"abc"+File.separator+"a.txt");
常见方法:
访问文件对象
public String getName() //返回文件对象名,不包含路径名
public String getPath() //File对象中封装的路径是什么,获取的就是什么
public String getAbsolutePath() //返回绝对路径名,包含文件名
public String getParent() //返回父文件对象的路径名,如果封装的是相对路径,返回null
public File getParentFile() //返回父文件对象
创建:
boolean createNewFile()throws IOException:创建文件,如果被创建的文件已经存在,则不创建。
boolean mkdir(): 创建文件夹。
boolean mkdirs(): 创建多级文件夹。
删除:
boolean delete:可用于删除文件或者文件夹。注意:对于文件夹只能删除不带内容的空文件夹,对于带有内容的文件夹,不可以直接删除,必须要从里往外删除。
void deleteOnExit():删除动作交给系统完成。无论是否反生异常,系统在退出时执行删除动作。
判断:
boolean canExecute();
boolean canWrite();
boolean canRead();
boolean exists():判断文件或者文件夹是否存在。
boolean isFile(): 判断File对象中封装的是否是文件。
boolean isDirectory():判断File对象中封装的是否是文件夹。
boolean isHidden():判断文件或者文件夹是否隐藏。在获取硬盘文件或者文件夹时,对于系统目录中的文件,java是无法访问的,所以在遍历,可以避免遍历隐藏文件。
获取:
getName():获取文件或者文件夹的名称。
getPath():File对象中封装的路径是什么,获取的就是什么。
getAbsolutePath():无论File对象中封装的路径是什么,获取的都是绝对路径。
getParent(): 获取File对象封装文件或者文件夹的父目录。
注意:如果封装的是相对路径,那么返回的是null.
long length():获取文件大小。
long lastModified():获取文件或者文件最后一次修改的时间。
目录操作:
public boolean mkdir () //创建目录,正常建立时返回true
public String[] list() //返回目录中的所有文件名字符串
public File[] listFiles() //返回目录中的所有文件对象
static File[] listRoots():获取的是被系统中有效的盘符。
String[] list():获取指定目录下当前的文件以及文件夹名称。
String[] list(Filenamefilter): 可以根据指定的过滤器,返回过滤后的文件及文件夹名称。
File[] listFiles():获取指定目录下的文件以及文件夹对象。
文件操作:
public boolean renameTo(Filedest) //文件重命名
public boolean delete() //删除空目录或文件
重命名:
renameTo(File):
File f1 = new File("c:\\a.txt");
File f2 = new File("c:\\b.txt");
f1.renameTo(f2);//将c盘下的a.txt文件改名为b.txt文件。
实例,显示文件夹下所有文件及子文件夹下的内容。
分析:方法listDir()可以显示当前文件夹下的文件,如果有子文件夹,则需使用递归调用。
注意:
一定要限定条件,否则内存溢出。
使用递归时,调用次数不要过多,否则也会出现内存溢出。
//列出指定目录下的当前的文件或者文件夹。
//想要列出当前目录下的文件夹中的文件,其实就是在重新使用该功能 。
public void listDir(File dir,int level) {
System.out.println(getLevel(level)+dir.getName());
level++;
File[] files = dir.listFiles();
for(int x =0; x<files.length; x++){
if(files[x].isDirecotry())
listDir(files[x],level);//那么就行该功能的重复使用。递归。
else
System.out.println(getLevel(level)+files[x].getName());
}
}
//想要对列出的目录有一些层次关系。
public String getLevel(int level) {
StringBuilder sb = new StringBuilder();
sb.append("|--");
for(int x=0; x<level; x++) {
sb.insert(0,"| ");
}
return sb.toString();
}
补充—文件过滤器
过滤器FileFilter的使用
FileFilter接口:用于抽象路径名的过滤器。此接口的实例可传递给 File 类的 listFiles(FileFilter) 方法。
成员方法: boolean accept(File pathname) 测试指定抽象路径名是否应该包含在某个路径名列表中。
随机访问文件类RandomAccessFile
RandomAccessFile类对文件进行随机读写操作。该对象并不是流体系中的一员。该对象中封装了字节流,同时还封装了一个缓冲区(字节数组),通过内部的指针来操作数组中的数据。
该对象特点:
该对象只能操作文件,所以构造函数接收两种类型的参数:字符串路径或File对象。
该对象既可以对文件进行读取,也可以写入。在进行对象实例化时,必须要指定的该对象的操作模式,r rw等。
该对象中有可以直接操作基本数据类型的方法。
该对象最有特点的方法:
skipBytes():跳过指定的字节数。
seek():指定指针的位置。
getFilePointer():获取指针的位置。
通过这些方法,就可以完成对一个文件数据的随机的访问。想读哪里就读哪里,想往哪里写就往哪里写。该对象功能,可以读数据,可以写入数据,如果写入位置已有数据,会发生数据覆盖。也就是可以对数据进行修改。
注意:
在使用该对象时,建议数据都是有规则的。或者是分段的。
该对象在实例化时,如果要操作的文件不存在,会自动建立。如果要操作的文件存在,则不会建立,如果存在的文件有数据。那么在没有指定指针位置的情况下,写入数据,会将文件开头的数据覆盖。
- 课堂笔记--文件操作
- 课堂笔记--随机文件操作和对象序列化
- 科锐课堂笔记:2017/4/24 文件操作
- 文件管理系统课堂笔记
- 字符串操作——课堂笔记
- 操作系统课堂笔记(6)文件管理
- 课堂笔记
- 课堂笔记
- 课堂笔记
- 课堂笔记
- 课堂笔记
- 课堂笔记
- 课堂笔记
- 课堂笔记
- 课堂笔记
- 课堂笔记
- 课堂笔记
- 课堂笔记
- cramfs文件系统中ARM9上的移植
- 增加组播路由
- MV预测过程详解(附图)
- 编程之美--不要被阶乘吓倒
- Windows发展历史
- 课堂笔记--文件操作
- Apache2+PHP4+MySql配置
- 随笔
- hdu 1085
- [介绍] SymbolSort, 帮你避免或减少代码膨胀 (Code Bloat)
- POJ 3468 A Simple Problem with Integers 线段树
- ulimit命令详细解释
- ant 学习
- MPlayer 使用