/**
 * 
 */
package com.io.file;

import java.io.File;
import java.io.IOException;

/**
 * <pre>
 * <b>.</b>
 * <b>Description:</b> 
 *    file的工具类:包括遍历等
 * <b>Author:</b> @xieji
 * <b>Date:</b> 2016年11月14日 上午11:26:27
 * <b>Copyright:</b> Copyright ©2013-2017  https://github.com/Jacob233 (github主页 0.0)
 * <b>Changelog:</b>
 *   Ver   Date                         Author                   Detail
 *   --------------------------------------------------------------------------------
 *   1.0   2016年11月14日 上午11:26:27              @xieji
 * </pre>
 */
public class FileUtils {
    public void listDir(File file) throws IOException {
        // 判读file是否存在,不存在抛出异常
        if (!file.exists()) {
            new IllegalArgumentException("文件目录:" + file + "不存在");
        }
        // 判断文件是否是目录文件
        if (!file.isDirectory()) {
            new IllegalArgumentException("该文件:" + file + "不是目录文件");
        }
        // 得到该目录文件下的所有子文件名称
        // String listFileS[] = file.list();
        // for (String childFile : listFileS) {
        // System.out.println(childFile);
        // }
        // 得到该目录下的所有子文件
        File listFile[] = file.listFiles();
        // for(File childFile:listFile){
        // System.out.println(childFile);
        // }
        // 得到该目录下的所有子文件及子文件目录中的文件
        if (listFile != null && listFile.length > 0) {
            for (File childFile : listFile) {
                // 如果其是子文件目录,则遍历其子文件
                if (childFile.isDirectory()) {
                    // 递归
                    listDir(childFile);
                }
                System.out.println(childFile);
            }
        }
    }
}

文件读写类RandomAccessFile的应用

/**
 * 
 */
package com.io.file;

import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Arrays;

/**
 * <pre>
 * <b>.</b>
 * <b>Description:</b> 
 *    RandomAccessFile:随机读写文件类
 *      读写:文件的写入,只写入一个byte,从后八位写入 读,只读一个byte,读完后,指针自动指向下一个byte
 *          文件读写完成后一定关闭
 *      模式:两种:rw、r
 *      关闭:文件用完即关
 * <b>Author:</b> @xieji
 * <b>Date:</b> 2016年11月14日 下午2:19:21
 * <b>Copyright:</b> Copyright ©2013-2017  https://github.com/Jacob233 (github主页 0.0)
 * <b>Changelog:</b>
 *   Ver   Date                         Author                   Detail
 *   --------------------------------------------------------------------------------
 *   1.0   2016年11月14日 下午2:19:21              @xieji
 * </pre>
 */
public class RAFDemo {
    // 随机读写文件测试
    public void testRAF() throws IOException {
        File demo = new File("demo");
        // 判断file是否存在,若不存在则创建
        if (!demo.exists()) {
            demo.mkdir();
        }
        // 判断file是否存在文件,若不存在则创建
        File content = new File(demo, "raf.txt");
        if (!content.exists()) {
            content.createNewFile();
        }
        // 获取读写文件类randomAccessFile(模式为读写rw,还有一种模式是r)
        RandomAccessFile raf = new RandomAccessFile(content, "rw");
        // raf通过指针实现随机读写
        System.out.print(raf.getFilePointer() + " ");// 初始指针
        // 写入(指针在移动)
        raf.write('A');
        System.out.print(raf.getFilePointer() + " ");
        raf.write('B');
        System.out.print(raf.getFilePointer() + " ");
        // 1.写入整形 :写入只能从后八位,测试通过int最大数
        int maxInt = 0x7fffffff;
        raf.write(maxInt >>> 24 & 0xff);// 向右移动24位,即高八位
        raf.write(maxInt >>> 16 & 0xff);
        raf.write(maxInt >>> 8 & 0xff);
        raf.write(maxInt >>> 0 & 0xff);
        // 上述代码,可用下面的一行代替
        // raf.writeInt(maxInt);
        System.out.print(raf.getFilePointer() + " ");
        // 2.写入字符串
        String word = "谢";
        byte b[] = word.getBytes("gbk");
        raf.write(b);
        System.out.println(raf.length());
        System.out.print(raf.getFilePointer() + " ");

        raf.writeChars(word);
        System.out.print(raf.getFilePointer() + " ");
        System.out.println();
        // 读取文件
        byte[] bytes = new byte[(int) raf.length()];
        // 先将指针只会头节点
        raf.seek(0);
        raf.read(bytes);
        System.out.println(Arrays.toString(bytes));
        // for (byte c : bytes) {
        // System.out.print(Integer.toHexString(c&0xff)+" ");
        // }
        // 关闭
        raf.close();
    }
}