Java清除文件后添加的标志



import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes;

/**
 * Created by Administrator on 2015/12/28.
 */
public class ClearFileFlag {

    public static void main(String[] args) throws IOException {

        Files.walkFileTree(Paths.get("I:\\IT\\数据结构\\严蔚敏\\《数据结构》的全部代码实现(C语言)\\"),new SimpleFileVisitor<Path>(){

            @Override
            public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {

                try {
                    dosomething(file.toFile());
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return super.visitFile(file, attrs);
            }
        });
    }

    /**
     * @param b byte[]
     * @return String
     */
    public static String Bytes2HexString(byte[] b) {
        String ret = "";
        for (int i = 0; i < b.length; i++) {
            String hex = Integer.toHexString(b[i] & 0xFF);
            if (hex.length() == 1) {
                hex = '0' + hex;
            }
            ret += hex.toUpperCase();
        }
        return ret;
    }

    private static int dosomething(File file) throws Exception {
        RandomAccessFile randomAccessFile = new RandomAccessFile(file, "r");
        long len = randomAccessFile.length();
        int limit=3;
        if(len<limit)
        {
            return (int) len;
        }
        //0D 0A 1A  检测文件后的
        randomAccessFile.seek(len - limit);
        byte[] buffer = new byte[limit];
        randomAccessFile.read(buffer);
        //System.out.println(file.getAbsolutePath());
        for(int i=0;i<buffer.length;i++)
        {
            byte bt=buffer[i];
            //System.out.print(bt+" ");
            String str = Integer.toHexString(bt).toUpperCase();
            //System.out.println(" " + str );

        }
        String flag=Bytes2HexString(buffer);
        System.out.println(flag);
        if(flag.equals("0D0A1A"))
        {
            //找到标志
            byte data[]=StreamTool.readFile(file.getAbsolutePath());
            byte out[]=new byte[data.length-limit];
            System.arraycopy(data,0,out,0,data.length-limit);
            StreamTool.save(file.getAbsolutePath(),out);
            System.out.println("修改"+file.getAbsolutePath());
        }
        return limit;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值