字符流复制文件,只适用于文本
/**
* 字符流读写复制文件,仅限文本文件
* @param src 源文件
* @param out 目标文件
*/
public static void FileReaderFileWriter(String src , String out){
FileWriter fileWriter = null;
FileReader fileReader = null;
try{
fileReader = new FileReader(src);
fileWriter = new FileWriter(out);
char[] chars = new char[1024];
int num = 0;
while((num = fileReader.read(chars)) != -1){
fileWriter.write(chars,0,num);
fileWriter.flush();
}
}catch(IOException e){
e.printStackTrace();
}finally{
try {
fileWriter.close();
fileReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
字节流复制文件(文本,图片,音乐等)
/**
* 字节流读写复制文件
* @param src
* @param out
*/
public static void FileInputStreamFileOutputStream(String src,String out){
FileInputStream fileInputStream = null;
FileOutputStream fileOutputStream = null;
try {
fileInputStream = new FileInputStream(src);
fileOutputStream = new FileOutputStream(out);
byte[] b = new byte[1024];
int num = 0;
while( (num = fileInputStream.read(b)) !=-1 ){
fileOutputStream.write(b,0,num);
fileOutputStream.flush();
}
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
fileOutputStream.close();
fileInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
为了适用性通常使用字节流复制文件
还有两种缓冲区流复制文件(只写一种,用法相似)
/**
* 字符流缓冲区读写复制文件(高效)
* @param src
* @param out
*/
public static void BufferReaderBufferWriter(String src , String out){
BufferedReader bufferReader = null;
BufferedWriter bufferWriter = null;
try {
bufferReader = new BufferedReader(new FileReader(src));
bufferWriter = new BufferedWriter(new FileWriter(out));
String line = "";
while((line = bufferReader.readLine()) != null){
bufferWriter.write(line);
bufferWriter.newLine();
bufferWriter.flush();
}
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
bufferWriter.close();
bufferReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}