可以遍历指定目录(一个或多个)及其所有子文件,用Iterator实现
复制代码代码如下:
แพ็คเกจ archiver.util;
นำเข้า java.io.File;
นำเข้า java.util.ArrayList;
นำเข้า java.util.Arrays;
นำเข้า java.util.Iterator;
นำเข้า java.util.List;
FileIterator คลาสสาธารณะใช้ Iterator<File>, Iterable<File> {
ตัววนซ้ำ <String> ตัววนซ้ำส่วนตัว;
รายการส่วนตัว <String> เส้นทาง;
รายการส่วนตัว <ไฟล์> dirs;
FileIterator สาธารณะ (รายการ <String> เส้นทาง) {
this.paths = new ArrayList<String>(paths);
this.dirs = new ArrayList<ไฟล์>();
this.iterator = this.paths.iterator ();
-
ไฟล์สาธารณะถัดไป () {
ไฟล์ไฟล์ = null;
ถ้า (มีถัดไป()) {
ไฟล์ = ไฟล์ใหม่ (iterator.next());
ถ้า (file.isDirectory()) {
dirs.add(ไฟล์);
-
-
ไฟล์ส่งคืน;
-
บูลีนสาธารณะ hasNext() {
ถ้า (!iterator.hasNext()) {
เส้นทาง.ชัดเจน();
สำหรับ (ไฟล์ dir : dirs) {
สำหรับ (ชื่อสตริง : dir.list()) {
paths.add(dir.getPath()+File.separator+name);
-
-
dirs.ชัดเจน();
ถ้า (paths.size() == 0) {
กลับเท็จ;
-
ตัววนซ้ำ = path.iterator();
-
กลับเป็นจริง;
-
@แทนที่
โมฆะสาธารณะลบ () {
โยน UnsupportedOperationException ใหม่ ();
-
@แทนที่
ตัววนซ้ำสาธารณะ <ไฟล์> ตัววนซ้ำ () {
คืนสิ่งนี้;
-
โมฆะคงที่สาธารณะ main (String [] args) {
FileIterator iter = ใหม่ FileIterator(Arrays.asList("."));
สำหรับ (ไฟล์ไฟล์ : iter) {
System.out.println (ไฟล์);
-
-
-