Java实现文件复制的四种方式
背景:有很多的Java初学者对于文件复制的操作总是搞不懂,下面我将用4中方式实现指定文件的复制。
实现方式一:使用FileInputStream/FileOutputStream字节流进行文件的复制操作
复制 1 private static void streamCopyFile(File srcFile, File desFile) throws IOException { 2 // 使用字节流进行文件复制 3 FileInputStream fi = new FileInputStream(srcFile); 4 FileOutputStream fo = new FileOutputStream(desFile); 5 Integer by = 0; 6 //一次读取一个字节 7 while((by = fi.read()) != -1) { 8 fo.write(by); 9 } 10 fi.close(); 11 fo.close(); 12 }
实现方式二:使用BufferedInputStream/BufferedOutputStream高效字节流进行复制文件
复制 1 private static void bufferedStreamCopyFile(File srcFile, File desFile) throws IOException { 2 // 使用缓冲字节流进行文件复制 3 BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcFile)); 4 BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(desFile)); 5 byte[] b = new byte[1024]; 6 Integer len = 0; 7 //一次读取1024字节的数据 8 while((len = bis.read(b)) != -1) { 9 bos.write(b, 0, len); 10 } 11 bis.close(); 12 bos.close(); 13 }
实现方式三:使用FileReader/FileWriter字符流进行文件复制。(注意这种方式只能复制只包含字符的文件,也就意味着你用记事本打开该文件你能够读懂)
复制 1 private static void readerWriterCopyFile(File srcFile, File desFile) throws IOException { 2 // 使用字符流进行文件复制,注意:字符流只能复制只含有汉字的文件 3 FileReader fr = new FileReader(srcFile); 4 FileWriter fw = new FileWriter(desFile); 5 6 Integer by = 0; 7 while((by = fr.read()) != -1) { 8 fw.write(by); 9 } 10 11 fr.close(); 12 fw.close(); 13 }
实现方式四:使用BufferedReader/BufferedWriter高效字符流进行文件复制(注意这种方式只能复制只包含字符的文件,也就意味着你用记事本打开该文件你能够读懂)
复制 1 private static void bufferedReaderWriterCopyFile(File srcFile, File desFile) throws IOException { 2 // 使用带缓冲区的高效字符流进行文件复制 3 BufferedReader br = new BufferedReader(new FileReader(srcFile)); 4 BufferedWriter bw = new BufferedWriter(new FileWriter(desFile)); 5 6 char[] c = new char[1024]; 7 Integer len = 0; 8 while((len = br.read(c)) != -1) { 9 bw.write(c, 0, len); 10 } 11 12 //方式二 13 /*String s = null; 14 while((s = br.readLine()) != null) { 15 bw.write(s); 16 bw.newLine(); 17 }*/ 18 19 br.close(); 20 bw.close(); 21 }
以上便是Java中分别使用字节流、高效字节流、字符流、高效字符流四种方式实现文件复制的方法!
感谢您花时间阅读此篇文章,如果您觉得这篇文章你学到了东西也是为了犒劳下博主的码字不易不妨打赏一下吧,让博主能喝上一杯咖啡,在此谢过了!
如果您觉得阅读本文对您有帮助,请点一下左下角“推荐”按钮,您的将是我最大的写作动力!另外您也可以选择【关注我】,可以很方便找到我!
本文版权归作者和博客园共有,来源网址:http://www.cnblogs.com/hafiz 欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利!
![个人微信公众号](https://files.cnblogs.com/files/hafiz/qrcode_258.bmp)
![博主微信号](https://files.cnblogs.com/files/hafiz/wechat.bmp)
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· 本地部署 DeepSeek:小白也能轻松搞定!
· 如何给本地部署的DeepSeek投喂数据,让他更懂你
· 从 Windows Forms 到微服务的经验教训
· 李飞飞的50美金比肩DeepSeek把CEO忽悠瘸了,倒霉的却是程序员
· 超详细,DeepSeek 接入PyCharm实现AI编程!(支持本地部署DeepSeek及官方Dee