public static void copyFileWithCallback1(final String sourcefile, final String targetFile, ICommonProgressCallback callback) {
FileInputStream fileInputStream = null;
BufferedInputStream inbuff = null;
FileOutputStream fileOutputStream = null;
BufferedOutputStream outbuff = null;
FileChannel fileChannelOutput = null;
FileChannel fileChannelInput = null;
try {
fileInputStream = new FileInputStream(sourcefile);
inbuff = new BufferedInputStream(fileInputStream);
fileOutputStream = new FileOutputStream(targetFile); // 新建文件输出流并对它进行缓冲
outbuff = new BufferedOutputStream(fileOutputStream);
fileChannelOutput = fileOutputStream.getChannel();
fileChannelInput = fileInputStream.getChannel();
long total = fileInputStream.available();
ByteBuffer buffer = ByteBuffer.allocate(4096);
long transferSize = 0;
int tempP = 0;
int progress = 0;
while (fileChannelInput.read(buffer) != -1) {
buffer.flip();
transferSize += fileChannelOutput.write(buffer);
progress = (int) ((transferSize * 100) / total);
if (progress > tempP) {
tempP = progress;
if (callback != null) {
callback.onProgress(progress);
}
}
buffer.clear();
}
} catch (FileNotFoundException e) {
Log.e("CopyPasteUtil", "CopyPasteUtil copyFile error:" + e.getMessage());
} catch (IOException e) {
Log.e("CopyPasteUtil", "CopyPasteUtil copyFile error:" + e.getMessage());
} finally {
try {
outbuff.flush();
inbuff.close();
outbuff.close();
fileOutputStream.close();
fileInputStream.close();
fileChannelOutput.close();
fileChannelInput.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Java FileChannel copy文件
最新推荐文章于 2023-07-24 13:42:42 发布