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;
}
}
Java清除文件后添加的标志
最新推荐文章于 2021-05-28 17:52:57 发布