文件过滤器
1.
例子:
class MyFilterTXT implements FileFilter {
@Override
public boolean accept(File pathname) {
return false;
}
}
class MyFilterTXT implements FileFilter {
@Override
public boolean accept(File pathname) {
if (pathname.isDirectory()) {
return true;
}
return pathname.getName().endsWith("txt");
}
}
public static void getTXTFile(File file) {
File[] listFiles = file.listFiles(new MyFilterTXT());
for (File subFile : listFiles) {
if (subFile.isDirectory()) {
getTXTFile(subFile);
} else {
System.out.println(subFile.getName());
}
}
}
我们常用的文件过滤器是FileFilter, 还有一个是FilenameFilter.它跟FileFilter差不多
class MyFilterLengthFilter implements FilenameFilter {
@Override
public boolean accept(File dir, String name) {
File file = new File(dir, name);
if (file.isHidden()) {
return false;
}
if (file.isDirectory()) {
return true;
}
return file.length() < 200 * 1024;
}
}
FilenameFilter的两个参数:dir和name
第一个参数是文件夹的根路径,参数二是参数一路经下的文件和文件夹的名字(第一层级下).如果
要多层级需要自己写递归方法遍历.File中有个构造方法是File file = new File(dir
,name);用这两个参数可以创建一个对象出来.
字节流-输入输出
字节输出流
2.
File file = new File("/Users/lanou/Desktop/Test/wang.txt");
FileOutputStream oStream = new FileOutputStream(file);
oStream.write(49);
oStream.write(48);
oStream.write(48);
byte[] b = {65,66,67,68};
oStream.write(b);
oStream.write(b, 1, 2);
oStream.write("hello".getBytes());
oStream.write("world".getBytes());
oStream.close();
}
File file = new File("/Users/lanou/Desktop/Test/long.txt");
FileOutputStream oStream = new FileOutputStream(file, true);
oStream.write("hello\n".getBytes());
oStream.close();
字节输入流
File file = new File("/Users/lanou/Desktop/Test/znb.txt");
FileInputStream iStream = new FileInputStream(file);
int i1 = iStream.read();
System.out.println((char)i1);
i1 = iStream.read();
System.out.println((char)i1);
i1 = iStream.read();
System.out.println((char)i1);
i1 = iStream.read();
System.out.println((char)i1);
i1 = iStream.read();
System.out.println((char)i1);
i1 = iStream.read();
System.out.println(i1);
iStream.close();
}
File file = new File("/Users/lanou/Desktop/Test/znb.txt");
FileInputStream iStream = new FileInputStream(file);
int num = 0;
while ((num = iStream.read()) != -1) {
System.out.println(num);
}
iStream.close();
File file = new File("/Users/lanou/Desktop/Test/znb.txt");
FileInputStream iStream = new FileInputStream(file);
byte[] b = new byte[2];
int i1 = iStream.read(b);
System.out.println(i1);
System.out.println(new String(b));
iStream.close();