一、File文件类型:
1.作用:对文件系统上的文件或目录进行查看操作等。只能 创建,删除文件(目录)或者查看其属性,
但是不能修改文件的内容。
2.构造器:
1) File(String pathname):
pathname:参数为一个路径 ,指定文件或目录的路径; (此路径硬盘不一定存在)
此构造器的相对位置是在项目名这个文件夹下.
2) File(String parentName,String childName)
根据 parent 路径名字符串和 child 路径名字符串 ,创建一个新 File 实例。
3.文件的过滤接口
概念:文件的过滤接口FileFilter,里提供了一个
方法:accept(File file),可以对文件进行过滤。
File file=new File(".");//表示所在的当前目录。--当前工程名下的文件及目录。
FileFilter filter=new FileFilter(){
/*
* true:保留我们所需要的文件名
* false:不保留的文件
* 回调:内部逻辑调用此方法
*/
public boolean accept(File file){
return file.getName().startsWith(".");
}
};
File[] subs=file.listFiles(filter);
if(subs!=null&&subs.length>0){
for(File s:subs){
System.out.println(s.getName());
}
}
4.路径
1)文件操作系统的路径分隔符不一样。
如:window下的 \ , linux下的 /
File.separator:常量,会根据不同操作,系统返回不同分隔符。
2) 相对路径: 相对于某一个目录来说的。
. :表示所在的当前目录,即是当前工程名下的文件及目录
.. :表示返回上一层目录
3) 绝对 路径:(不建议使用)
以根目录为参照物的,也就是需要从根目录写起。
windows: c:\a\a.txt ; linux: /home/a.txt
5.方法
1)exists():判断指定路径在硬盘上是否存在;
2)listFiles():返回此目录下的所有文件和目录;--里面可以有filter参数
3)createNewFile():创建文件;
其作用: 创建时,不一定成功。当这个要创建的
* 文件的父目录不存在时,创建失败。
* 所以这个方法会抛出异常。
4)isFile():判断指定的file是不是文件;
5) mkdir():创建文件夹的作用;会创建一层目录
6) mkdirs():会创建多层目录;
7)delete():文件删除;
--当构造器指定的路径是单层时:
如果是文件,会直接删除。
如果是目录,目录下为空,可以直接删除; 目录不为空,删除失败;
--当构造器指定的路径是多层时:
最后一层是文件,只会删除此文件
最后一层是目录, 目录为空时,只会删除之后一层; 目录不为空时,删除失败;
删除逻辑:先删最里层,里层删完之后,才能删上一层。
8)getName():当前文件名字。
二、随机读写文件类型
1.RandomAccessFile(File pathName,String mode):
file:要指定一个文件的路径或者文件名;
mode:'r'/'rw';
其作用是:支持对随机访问文件的读取和写入。随机访问文件的行为类似存储在文件系统中的一个大型 byte 数组
2.构造器:
RandomAccessFile(File file,String mode)
RandomAccessFile(String filepath,String mode)
3. 常用方法:
1) int read():
读取一个字节,放入返回值的低八位上。返回值为int类型
2)write(int num):
将参数num的二进制的低八位写出。
其他方法:
1)write(byte[] bytes)
2)write(byte[] bytes,int startIndex,int length):
对文件操作时,底层是存在指针的。
1)getFilePointer():获取文件指针的位置。
2)seek(int index):将指针调到某一位置。
3)read(byte[] bytes):将读到的字节(指的是之前写进文件里的内容)存入字节数组中,返回值为读取
的有效字节个数。当返回-1时,说明读到文件 末尾了。
4)write(byte[] by):将字节数组里的内容写进文件中。
---其中涉及到的方法----:
str.getBytes("utf-8"):将字符串按照默认字符集转成相应的字节数组。
String str1 = new String(byte1,"gbk"):by是字节数组,按照gbk编码编译出来,转换成相应的字符串。
----------------------
3)readLine():读取文本的下一行
返回此文件文本的下一行,如果连一个字节也没有读取就已到达文件的末尾,则返回 null。
4)writeUTF(String str):使用 modified UTF-8 编码以与机器无关的方式将一个字符串写入该文件。
5)readUTF():从此文件读取一个字符串。