代码如下:
public static byte bSource;
public static byte bTarget;
public static byte colon = ':';
/**
* 从二进制文件读取字节数组
*
* @param sourceFile
* @return
* @throws IOException
*/
public static byte[] readFile(File sourceFile) {
if (sourceFile.isFile() && sourceFile.exists()) {
long fileLength = sourceFile.length();
if (fileLength > 0L) {
try {
BufferedInputStream fis = new BufferedInputStream(
new FileInputStream(sourceFile));
byte[] b = new byte[(int) fileLength];
while (fis.read(b) != -1) {
}
fis.close();
fis = null;
return b;
} catch (IOException e) {
e.printStackTrace();
}
}
}
return null;
}
/**
* 将字节数组读入二进制文件
*
* @param targetFile
* @param content
* @return
*/
public static boolean writeBytes(File targetFile, byte[] content) {
try {
BufferedOutputStream fos = new BufferedOutputStream(
new FileOutputStream(targetFile));
for (int i = 0; i < content.length - 1; i++) {
// 替换掉盘符路径(E:) 以冒号作为判断改字节是否代表一个盘符
if (content[i] == bSource && content[i + 1] == colon) {
content[i] = bTarget;
}
fos.write(content[i]);
}
fos.write(content[content.length - 1]); // 写入最后一个字节
fos.flush();
fos.close();
return true;
} catch (IOException e) {
e.printStackTrace();
}
return false;
}