62,614
社区成员
发帖
与我相关
我的任务
分享
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.channels.FileChannel;
public class test1 {
public static void main(String[] args) throws IOException {
FileChannel in1 = new FileInputStream("D:\\610OMG_81.iso").getChannel();
FileChannel out1 = new FileOutputStream("D:\\610OMG_81_transFrom.iso").getChannel();
try {
out1.transferFrom(in1, 0, in1.size());
} finally {
out1.close();
in1.close();
}
FileChannel in2 = new FileInputStream("D:\\610OMG_81.iso").getChannel();
FileChannel out2 = new FileOutputStream("D:\\610OMG_81_transTo.iso").getChannel();
try {
in2.transferTo(0, in2.size(), out2);
} finally {
out2.close();
in2.close();
}
}
}
public long transferTo(long var1, long var3, WritableByteChannel var5) throws IOException {
this.ensureOpen();
if (!var5.isOpen()) {
throw new ClosedChannelException();
} else if (!this.readable) {
throw new NonReadableChannelException();
} else if (var5 instanceof FileChannelImpl && !((FileChannelImpl)var5).writable) {
throw new NonWritableChannelException();
} else if (var1 >= 0L && var3 >= 0L) {
long var6 = this.size();
if (var1 > var6) {
return 0L;
} else {
int var8 = (int)Math.min(var3, 2147483647L);
if (var6 - var1 < (long)var8) {
var8 = (int)(var6 - var1);
}
long var9;
if ((var9 = this.transferToDirectly(var1, var8, var5)) >= 0L) {
return var9;
} else {
return (var9 = this.transferToTrustedChannel(var1, (long)var8, var5)) >= 0L ? var9 : this.transferToArbitraryChannel(var1, var8, var5);
}
}
} else {
throw new IllegalArgumentException();
}
}
else if (var1 >= 0L && var3 >= 0L) {
long var6 = this.size();
if (var1 > var6) {
return 0L;
} else {
int var8 = (int)Math.min(var3, 2147483647L);
if (var6 - var1 < (long)var8) {
var8 = (int)(var6 - var1);
}
long var9;
if ((var9 = this.transferToDirectly(var1, var8, var5)) >= 0L) {
return var9;
} else {
return (var9 = this.transferToTrustedChannel(var1, (long)var8, var5)) >= 0L ? var9 : this.transferToArbitraryChannel(var1, var8, var5);
}
}