程序员经常会忘记关闭文件。jdk 7 提供了下面 的新的 try-writh=resources 语法来自动关闭文件。
try(//声明 和创建资源){
//使用资源来处理文件;
}
//两种笔试常考的编程题 复制文件
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
public class copyS {
private copyS(){
throw new AssertionError();
}
public static void fileCopy(String source ,String target) throws IOException {
try(InputStream in = new FileInputStream(source)){
try(OutputStream out = new FileOutputStream(target)){
byte[] buffer = new byte[4096];
int bytesToread;
while((bytesToread = in.read(buffer)) != -1) {
out.write(buffer , 0 , bytesToread);
}
}
}
}
public static void fileCopyNIO(String source, String target) throws IOException {
try (FileInputStream in = new FileInputStream(source)) {
try (FileOutputStream out = new FileOutputStream(target)) {
FileChannel inChannel = in.getChannel();
FileChannel outChannel = out.getChannel();
ByteBuffer buffer = ByteBuffer.allocate(4096);
while(inChannel.read(buffer) != -1) {
buffer.flip();
outChannel.write(buffer);
buffer.clear();
}
}
}
}
}