io-Inputstream+OutputStream 拷贝文件
使用Inputstream,OutputStream ,对文件进行拷贝:
1,这两个输入输出流拷贝只是拷贝单个文件,不包含文件夹;FileInputStream + FileOutputStream完成文件的拷贝。拷贝的过程应该是一边读,一边写。,文件类型随意,什么样的文件都能拷贝(图片、声音、world文档,.txt文档等等)。
2、输出流new对象之后一定要刷新: fos.flush()
3、输入流,输出流,在finally语句块中关闭时,要分开关闭
4、最核心的:一边读,一边写
byte[] bytes = new byte[1024 * 1024]; // 1MB(一次最多拷贝1MB。)
int readCount = 0;
while((readCount = fis.read(bytes)) != -1) {
fos.write(bytes, 0, readCount);
}
import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; /** * IO流拷贝单个文件(不包含目录)
使用FileInputStream + FileOutputStream完成文件的拷贝。
拷贝的过程应该是一边读,一边写。
使用以上的字节流拷贝文件的时候,文件类型随意,万能的。什么样的文件都能拷贝。 */ public class CopyTest01 { public static void main(String[] args) {
//创建一个输入流 FileInputStream fis = null;
//创建一个输出流 FileOutputStream fos = null; try { // 创建一个输入流对象 fis = new FileInputStream("E:\\javaseNote\\单例设计模式.md"); // 创建一个输出流对象 fos = new FileOutputStream("D:单例设计模式.md"); // 最核心的:一边读,一边写 byte[] bytes = new byte[1024 * 1024]; // 1MB(一次最多拷贝1MB。) int readCount = 0; while((readCount = fis.read(bytes)) != -1) { fos.write(bytes, 0, readCount); } // 刷新,输出流最后要刷新 fos.flush(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally { // 分开try,不要一起try。 // 一起try的时候,其中一个出现异常,可能会影响到另一个流的关闭。 try { fis.close(); } catch (IOException e) { e.printStackTrace(); } try { fos.close(); } catch (IOException e) { e.printStackTrace(); } } } }