一、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:creanteNewFile():创建文件;
其作用: 创建时,不一定成功。当这个要创建的
* 文件的父目录不存在时,创建失败。
* 所以这个方法会抛出异常。
4)isFile():判断指定的file是不是文件;
5)mkdir():创建文件夹的作用;会创建一层目录
6) mkdirs():会创建多层目录;
7)delete():文件删除;
--当构造器指定的路径是单层时:
如果是文件,会直接删除。
如果是目录,目录下为空,可以直接删除;
目录不为空,删除失败;
--当构造器指定的路径是多层时:
最后一层是文件,只会删除此文件
最后一层是目录,
目录为空时,只会删除之后一层;
目录不为空时,删除失败;
删除逻辑:先删最里层,里层删完之后,才能删上一层。
8)getName():当前文件名字。
二、随机读写文件类型
1.RandomAccessFile(File pathName,String mode):file:要指定一个文件的路径或者文件名;
mode:'r'/'rw';
其作用是:对文件的内容进行修改(读,写)操作。
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(by,"gbk"):by是字节数组,按照gbk编码编译出来。
转换成相应的字符串。