1. /* 本地文件 URL 文件拷贝 */
    /*文本文件拷贝 可以通过 字符流,也可以通过字节流*/
  1. /*二进制文件拷贝 只可以通过字节流*/
    /* 希望这个例子能帮助搞懂 字符流与字节流的区别 */
  1. import java.io.*; //in order to utilize stream object
  2. import java.util.*; // in order to utilize ArrayList
  3. import java.net.*;
  4. class Copy{
  5. public static void main(String [] args){
  6. boolean flag=false;
  7. String src="C:\\Users\\Ghc\\Desktop\\extractzip.bat";
  8. String dest="C:\\Users\\Ghc\\Desktop\\Test\\extractzip_copy.bat";
  9. System.out.println("copy textDoc: from "+src+" to "+dest+(copyTextDoc(src,dest) ? "Successfully!":"Failed"));
  10.  
  11. src="C:\\Users\\Ghc\\Desktop\\psb.jpg";
  12. dest="C:\\Users\\Ghc\\Desktop\\Test\\psb.jpg";
  13. System.out.println("copy textDoc: from "+src+" to "+dest+(copyBinFile(src,dest) ? "Successfully!":"Failed"));
  14.  
  15. String url="http://qiniuuwmp3.changba.com/852316795.mp3";
  16. String destPath="C:\\Users\\Ghc\\Desktop\\Test\\music.mp3";
  17.  
  18. // downLoad mp3 from URL
  19. downLoadMP3FromURL(url,destPath);
  20. }
  21.  
  22. public static void downLoadMP3FromURL(String url,String destPath){
  23. InputStream urlInpts=null;
  24. BufferedInputStream bufinpts=null;
  25. BufferedOutputStream bufoutpts=null;
  26. try{
  27. urlInpts=new URL(url).openStream();
  28. bufinpts=new BufferedInputStream(urlInpts);
  29. bufoutpts=new BufferedOutputStream(new FileOutputStream(destPath));
  30.  
  31. byte[] musicBuf=new byte[8192];
  32. int len=-1;
  33. while((len=bufinpts.read(musicBuf))!=-1){
  34. bufoutpts.write(musicBuf,0,len);
  35. bufoutpts.flush();
  36. }
  37. }
  38. catch(MalformedURLException mfurle){
  39. mfurle.printStackTrace();
  40. }
  41. catch(IOException ioe){
  42. ioe.printStackTrace();
  43. }
  44. }
  45.  
  46. public static boolean copyTextDoc(String src,String dest){
  47. boolean flag=true;
  48.  
  49. BufferedReader bufr=null;
  50.  
  51. BufferedWriter bufw=null;
  52. ArrayList<String> lineList=null;
  53.  
  54. try{
  55. //read text file
  56.  
  57. //bufr=new BufferedReader(new InputStreamReader(new FileInputStream(src)));
  58. //等价于
  59. bufr=new BufferedReader(new FileReader(src));
  60.  
  61. //bufw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(dest)));
  62. //等价于
  63. bufw=new BufferedWriter(new FileWriter(dest));
  64. lineList=new ArrayList<String>();
  65.  
  66. String line=null;
  67.  
  68. while((line=bufr.readLine())!=null){
  69. lineList.add(line);
  70. bufw.write(line,0,line.length());
  71. bufw.newLine();
  72. bufw.flush(); // must to flush!!! attention!!!
  73. }
  74.  
  75. Iterator<String> it=lineList.iterator();
  76. while(it.hasNext()){
  77. line=it.next();
  78. System.out.println(line+" from iterator");
  79. }
  80. }
  81. catch(IOException ioe){
  82. ioe.printStackTrace();
  83. flag=false;
  84.  
  85. //write text file
  86.  
  87. }
  88. finally{
  89. if(bufr!=null)
  90. try{
  91. bufr.close();
  92. bufr=null;
  93. }
  94. catch(IOException ioe){
  95. ioe.printStackTrace();
  96. }
  97. if(bufw!=null)
  98. try{
  99. bufw.close();
  100. bufw=null;
  101. }
  102. catch(IOException ioe){
  103. ioe.printStackTrace();
  104. }
  105. }
  106. return flag;
  107. }
  108. public static boolean copyBinFile(String src,String dest){
  109. boolean flag=true;
  110. BufferedInputStream bufinpts=null;
  111.  
  112. BufferedOutputStream bufoutpts=null;
  113. byte [] buf=new byte[1024];
  114. int len=-1;
  115. try{
  116. bufinpts=new BufferedInputStream(new FileInputStream(src));
  117. bufoutpts=new BufferedOutputStream(new FileOutputStream(dest));
  118.  
  119. while((len=bufinpts.read(buf))!=-1){
  120. bufoutpts.write(buf,0,len); // not need to flush, but the last buf may not been copied
  121. // print binary data see see , it's funny!!!
  122. /* for(int i=0;i<len;i++){
  123. System.out.print(buf[i]);
  124. } */
  125. bufoutpts.flush();
  126. }
  127. }
  128. catch(IOException ioe){
  129. ioe.printStackTrace();
  130. flag=false;
  131. }
  132. finally{
  133. if(bufinpts!=null)
  134. try{
  135. bufinpts.close();
  136. bufinpts=null;
  137. }
  138. catch(IOException ioe){
  139. ioe.printStackTrace();
  140. }
  141. if(bufoutpts!=null)
  142. try{
  143. bufoutpts.close();
  144. bufoutpts=null;
  145. }
  146. catch(IOException ioe){
  147. ioe.printStackTrace();
  148. }
  149. }
  150.  
  151. return flag;
  152. }
  153. }

  

IO 复习字节流字符流拷贝文件的更多相关文章

  1. IO—》字节流&字符流

    字节流 一.字节输出流OutputStream OutputStream此抽象类,是表示输出字节流的所有类的超类.操作的数据都是字节,定义了输出字节流的基本共性功能方法. FileOutputStre ...

  2. Java之字符流读写文件、文件的拷贝

    字符流读数据 – 按单个字符读取 创建字符流读文件对象: Reader reader = new FileReader("readme.txt"); 调用方法读取数据: int d ...

  3. 第31天学习打卡(File类。字符流读写文件)

    File类 概念 文件,文件夹,一个file对象代表磁盘上的某个文件或者文件夹 构造方法  File(String pathname) File(String parent,String child) ...

  4. -1-4 java io java流 常用流 分类 File类 文件 字节流 字符流 缓冲流 内存操作流 合并序列流

      File类 •文件和目录路径名的抽象表示形式 构造方法 •public File(String pathname) •public File(String parent,Stringchild) ...

  5. java io流(字符流) 文件打开、读取文件、关闭文件

    java io流(字符流) 文件打开 读取文件 关闭文件 //打开文件 //读取文件内容 //关闭文件 import java.io.*; public class Index{ public sta ...

  6. Java基础小知识1——分别使用字节流和字符流复制文件

    在日常使用计算机过程中经常会涉及文件的复制,今天我们就从Java代码的角度,看看在Java程序中文件复制的过程是如何实现的. 1.使用字节流缓冲区复制文件 示例代码如下: import java.io ...

  7. IO流(字节流,字符流,缓冲流)

    一:IO流的分类(组织架构) 根据处理数据类型的不同分为:字节流和字符流 根据数据流向不同分为:输入流和输出流   这么庞大的体系里面,常用的就那么几个,我们把它们抽取出来,如下图:   二:字符字节 ...

  8. Java中字节流和字符流复制文件

    字节流和字符流复制文件的过程: 1.建立两个流对象 绑定数据源和目的地 2.遍历出需复制的文件写入复制过后的新文件中(只不过是遍历的时候是区分字节和字符的) 3.访问结束后关闭资源 字节流复制文件: ...

  9. IO字 节流/字符流 读取/写入文件

    流是指一连串流动的数据信号,以先进,先出的方式发送和接收的通道 流的分类根据方向分为输入流所有接收,获得,读取的操作都是属于输入流所有的输入流名字都带有input或Reader 输出流所有发送,写的操 ...

随机推荐

  1. Asp.Net_Get跟Post

    1. Get(即使用QueryString显式传递)     方式:在url后面跟参数.     特点:简单.方便.     缺点:字符串长度最长为255个字符:数据泄漏在url中.     适用数据 ...

  2. OD之绕过序列号验证(二)

    上次是修改程序的标题,大家应该感觉这只是一个起点而已,接下来我们可以尝试绕过序列号验证,这种技术应用在很多软件中,比如淘宝上要买什么的软件,商家都会发给`你一个用户名和密码,而且还有试用期什么的,这确 ...

  3. EOS开发基础之二:使用cleos命令行客户端操作EOS(钱包wallet基础操作)

    不知道下边这一段英文你们是不是能看懂,如果看不懂那就算了,我就是转过来随便看看的. 总之你记住nodeos.cleos和keosd这三个工程十分重要就行了,回头咱们的研究都从这三个工程杀进去. EOS ...

  4. 团队博客 Week14

    0. 在吹牛之前,先回答这个问题: 如果你的团队来了一个新队员,有一台全新的机器, 你们是否有一个文档,只要设置了相应的权限,她就可以根据文档,从头开始搭建环境,并成功地把最新.最稳定版本的软件编译出 ...

  5. 【Alpha】第八次Scrum meeting

    今日任务一览: 姓名 今日完成任务 所耗时间 刘乾 学习js并学会使用js读写xml文件.学习python读取xml的方式... 然后上午满课,下午从1点到10点当计组助教去沙河教了一下午+一晚上,所 ...

  6. 使用NestedScrollView+ViewPager+RecyclerView+SmartRefreshLayout打造酷炫下拉视差效果并解决各种滑动冲突

    使用NestedScrollView+ViewPager+RecyclerView+SmartRefreshLayout打造酷炫下拉视差效果并解决各种冲突 如果你还在为处理滑动冲突而发愁,那么你需要静 ...

  7. [转帖]PG的简单备份恢复 找时间进行测试

    转帖PG的简单使用 https://blog.csdn.net/lk_db/article/details/77971634 一: 纯文件格式的脚本: 示例:1. 只导出postgres数据库的数据, ...

  8. laravel 处理自定错误页面,如404,500,501,502,503,504等等

    laravel 5.0 版本下,修改pp/Exceptions/Handler.phppublic function render($request, Exception $e) { if ($e i ...

  9. Java 工厂方法模式

    在工厂对象上调用创建方法,生成接口的某个实现的对象 通过这种方式,接口与实现分离 方法接口 /** * 方法接口 */ public interface Service { void method1( ...

  10. SSH-keygen用法

    很多朋友在用github管理项目的时候,都是直接使用https url克隆到本地,当然也有有些人使用 SSH url 克隆到本地.然而,为什么绝大多数人会使用https url克隆呢? 这是因为,使用 ...