版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/DongGeDeBoKe/article/details/77110606
/**
* 用途: 将一个文件全部倒置,并写入文件,如果文件的路径和源文件一样的话,就会覆盖源文件的内容
* @param fromFilepath 参数:源文件的全路径
* @param toFilePath 参数:目标文件的父目录路径,不加文件名
* 注意事项:文件的父级路径不存在则会自动创建
*/
public static void inversionFile(String fromFilepath, String toFilePath) {
File from = new File(fromFilepath);
if (!from.exists()) {
System.out.println("源文件不存在,请重新审核输入的文件路径!");
}
File to = new File(toFilePath);
if (!to.exists()) {
to.mkdirs();
}
ByteArrayOutputStream ou = null;
FileOutputStream fileOutputStream = null;
try {
RandomAccessFile ref = new RandomAccessFile(from, "rw");
ou = new ByteArrayOutputStream();
byte[] buffer = new byte[1024 * 8];
int len;
while ((len = ref.read(buffer)) != -1) {
ou.write(buffer, 0, len);
}
byte[] byteArray = ou.toByteArray();
//使用StringBuilder包装String,调用方法实现反转
StringBuilder sBuilder=new StringBuilder(new String(byteArray));
fileOutputStream = new FileOutputStream(new File(to, from.getName()));
fileOutputStream.write( sBuilder.reverse().toString().getBytes());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if (ou != null) {
try {
ou.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (fileOutputStream != null) {
try {
fileOutputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}