文件过滤器 :是个接口
编写自定义的类来实现过滤器的接口
class MyFileFiler implemrnts FileFilter{
public boolean accept(File pathname){
return
}
}
编写自定义规则来过滤文件,过滤文件时就看这个方法的返回值 ,返回true就保留 ,false就删除
例 ;删除文件夹中的所有txt文件。使用file.delete()方法,该方法不能删除包含子文件或字文件夹的文件,所以要遍历文件夹自定义规则
编写过滤器
class MyFileByTxt implements FilenameFilter{
public boolean accept(File pathname){
if(pathname.isDirectory){
return true;
}
return pathname.getName().endWith("txt")
}
}
}
遍历文件夹
public static void sortFile( File file){
File[] fileslist=file.listfiles(newMyFileByTxt());
for(File file2 : list){
if(file.isDirextory){
sortFile(file);
}else{
System.out.println(file2.getName())
}
}
}
字节流
从程序到文件叫输出流 --output
OutPutStream 是抽象类 ,是所有输出流的抽象类,特点:一次就写入一个字节
写文件的流程
1.绑定要写入的文件
2.用write写入
3.关闭资源
File file = new File("/Users/lanou/Desktop/test/wl.txt");
注意:如果该路径下没有文件,系统会帮你创建一个
如果有这个文件会覆盖
FileOutputStream fop = new FileOutputStream(file);
写入方法
1.按ascii来写入数据
fop.write(48)
2.根据字符数组来写入
Byte[] b = {65,66,67,68};
fop.write(b):
3.按字符数组 和起始坐标和长度来写入数据
fog.write(b,2,2);
4.简单写法
fog.write("nihao".getBytes());
关闭资源
fog.close();
文件的续写
File file = new File("/Users/lanou/Desktop/test/long.txt");
FileOutputStream outputStream = new FileOutputStream(file, true);
outputStream.write("hello".getBytes());
outputStream.close();
true就表示可以续写,重复执行可以写入多个hello
异常处理
io发生了异常 都需要停止程序 修改代码 抛出运行时异常
public class fuxi {
public static void main(String[] args) {
File file = new File("/Users/lanou/Desktop/test/long.txt");
FileOutputStream outputStream = null;
try {
outputStream = new FileOutputStream(file);
outputStream.write("hello".getBytes());
} catch (FileNotFoundException e) {
throw new RuntimeException("文件不存在 ");
} catch (IOException e) {
throw new RuntimeException("文件编写失败");
}
try {
if(outputStream!=null) {
outputStream.close();
}
} catch (IOException e) {
throw new RuntimeException("关闭失败");
}
}
}
字节输入流 ---input 相当于读文件
FileinputStream 所有输入流的父类
方法和output一致,首先创建关联,然后读文件,然后关闭数据流
private static void fun1() throws FileNotFoundException, IOException {
File file = new File("/Users/lanou/Desktop/test/wl.txt");
FileInputStream inputStream = new FileInputStream(file);
int read = inputStream.read();
System.out.println((char)read);
read = inputStream.read();
System.out.println((char)read);
read = inputStream.read();
System.out.println((char)read);
read = inputStream.read();
System.out.println((char)read);
read = inputStream.read();
System.out.println((char)read);
read = inputStream.read();
System.out.println(read);
read = inputStream.read();
System.out.println(read);
inputStream.close();
}
循环读文件
private static void fun2() throws FileNotFoundException, IOException {
File file = new File("/Users/lanou/Desktop/test/wl.txt");
FileInputStream inputStream = new FileInputStream(file);
int num =0;
while((num = inputStream.read())!=-1) {
System.out.println(num);
}
}
File file = new File("/Users/lanou/Desktop/test/wl.txt");
FileInputStream inputStream = new FileInputStream(file);
byte[] b = new byte[1024];
int i =inputString.read(b);
System.out.println(new String(b));
