`
where
  • 浏览: 81849 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

JAVA基础知识之我的理解7(关于File的一点总结,学习再继续,大家一起努力)

阅读更多

文件复制总结

开篇废话:

  最近渐渐习惯了蓝杰的学习,有点渐入佳境的感觉(仅是个人感觉),但是总的进度还是略有落后,安卓还没开始,还停留在刚刚构建好的层面,虽然听了两节课,但说实话没什么感觉,可能是没有练习的缘故。,写完这篇就开始搞之。最近还发现自己一个问题,在代码中会犯一些粗心的错误,而这些错误在找的时候又不那么容易,所以以后还要谨慎些。总的来说我这个阶段过的还OK。学习再继续大家一起努力在某求职节目看到这么一句话拿来与大家共勉(“我走的很慢,但我从未停下前进的脚步”)

谈文件复制思想:首先我们的程序先要获取要复制文件的文本内容,然后再将传入的内容通过程序传出到另一个我们新创建文件中,大的思想是这样的。但在具体实现过程中还有一些小的细节。

谈实现:

 1)实现“程序先要获取要复制文件的文本内容”

    在实现这个功能时我们用到InputStream这个抽象类的实现类FileInputStream,在创建了这个实现类的对象以后我们会用到read()方法这样我们就可以获取到目标文件的内容

 2)实现“将传入的内容通过程序传出到另一个我们新创建文件中”

    在实现这个功能时我们会用到OutputStream这个抽象类的实现类FileOutputStream,这个实现类同样会有三个write方法与read所对应,理论上这样我们就可以完成这个功能。

谈优化:

 readwrite之间我们面临个选择:

 1)我们一次性将文件读完并保存在临时数组中,然后将数组整体传

 2)我们按字节读一个字节传一次

 3)我们每次读一定大小的文件然后传,然后循环这个过程直至传完为止

 分析:

 理论上这三种方法都是行的通的我们可以分析一下哪个更好。

 第一种方法如果在文件不大时,当然是很好,用的时间也少,但是当文件很大时我们很难用一个数组来存,这就是理想与现实之间的尴尬。

 第二种方法在我们是现实时会发现它会用很长时间,这个多用的时间是多用在我们传输次数太多,显然这个想法不好。

 第三种方法可一说是对第一二种方法的优化,只要我们把握好“一定大小”我们可以在短时间完成这个任务。

 以上这么说可能有点抽象且枯燥,用一个比喻大家就懂了(PS这个比喻出自左哥,由于比喻的很贴切,where稍加改动引用之)

  大家都搬过宿舍吧,假如你要从七楼搬到五楼,你每次只拿一本书,这样你恐怕搬一天都搬不完,你要是力量无限大,一次性搬下来这当然最省事,但这显然是不现实的,我们正常时先打包,然后每次搬一包(当然这一包是你力所能及的最大化)这样的话我们肯定是最快的。

具体代码:

package exercise0814;

 

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.InputStream;

import java.io.OutputStream;

 

/**

 * 文件复制

 * @author where

 *

 */

public class Filecopy {

         /**

          * 主函数入口

          * @param args

          */

         public static void main(String[] args){

        //这是where在桌面创的文件

                   String path ="C:\\Users\\lenovo\\Desktop\\aa.txt";

       // 复制文件

                   String path1 = "C:\\Users\\lenovo\\Desktop\\dd.txt";

                   Filecopy f = new Filecopy();

                   f.copyfile(path,path1);

         

         }

         /**

          * 复制文件的方法

          * 

          */

         public void copyfile(String path,String path1){

                   long time = System.currentTimeMillis();

                   try{

                            //创建文件输入流对象

                            InputStream ins = new FileInputStream(path);

                            //创建输出流管道

                            OutputStream ous = new FileOutputStream(path1);

                            //从输入流管道中读取数据

                            byte[] b = new byte[500];//每次取100个数据传输

                            int a;

                            //当文件仍没被传输完时

                            while((a=ins.read(b))!=-1){

                                     ous.write(b);

                            }

            }

                   catch(Exception ef){

                            ef.printStackTrace();

                   }

                   //统计程序执行时间

                   long time1 = System.currentTimeMillis();

                   System.out.println("复制用时:"+(time1-time)+"毫秒");

         }

         

}

 

0
3
分享到:
评论

相关推荐

    Java_file_send.rar_java sendfile

    在Java编程环境中,文件传输是一项常见的任务,尤其是在网络...在`Java_file_send`这个例子中,我们可以学习到如何将这些概念应用于实际的代码实现。不过,具体代码细节和实现方式,需要解压压缩包并查看源码才能得知。

    java 编程入门思考

    2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体CD-ROM 8. 源代码 9. 编码样式 10. Java版本 11. 课程和培训 12. 错误 13. 封面设计 14. 致谢 第1章 对象入门 1.1 抽象的进步 1.2 对象的接口 1.3 ...

    Java面试题几道基础题总结

    根据给定的信息,我们可以整理出以下关于 Java 的基础面试题及其相关知识点: ### 1. 创建线程的方式 #### 继承 Thread 类实现线程 在 Java 中创建线程最直接的方法之一是通过继承 `Thread` 类并重写 `run()` 方法...

    JAVA核心知识整理.pdf

    ### JAVA核心知识整理 ...以上内容覆盖了JAVA核心知识整理中的关键知识点,包括JVM的基础知识、垃圾回收机制、引用类型、GC垃圾收集器的选择、IO/NIO模型及其实现、类加载机制以及常见的集合类等。

    达内JAVA培训综合笔记

    在这部分内容中,讲解了Java语言的基础知识,包括基础语言要素、八种基本数据类型、常量和变量的定义与使用、运算符与表达式,以及编程风格。流程控制语句方面,笔记中提及了顺序结构、选择结构和循环结构,这些是...

    Thinking in Java 中文第四版+习题答案

    2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体 8. 源代码 9. 编码样式 10. Java版本 11. 课程和培训 12. 错误 13. 封面设计 14. 致谢 第1章 对象入门 1.1 抽象的进步 1.2 对象的接口 1.3 实现方案的...

    java联想(中文)

    2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体CD-ROM 8. 源代码 9. 编码样式 10. Java版本 11. 课程和培训 12. 错误 13. 封面设计 14. 致谢 第1章 对象入门 1.1 抽象的进步 1.2 对象的接口 1.3 ...

    Java初学者入门教学

    2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体CD-ROM 8. 源代码 9. 编码样式 10. Java版本 11. 课程和培训 12. 错误 13. 封面设计 14. 致谢 第1章 对象入门 1.1 抽象的进步 1.2 对象的接口 1.3 ...

    JAVA_Thinking in Java

    2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体CD-ROM 8. 源代码 9. 编码样式 10. Java版本 11. 课程和培训 12. 错误 13. 封面设计 14. 致谢 第1章 对象入门 1.1 抽象的进步 1.2 对象的接口 1.3 ...

    Thinking in Java简体中文(全)

    2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体CD-ROM 8. 源代码 9. 编码样式 10. Java版本 11. 课程和培训 12. 错误 13. 封面设计 14. 致谢 第1章 对象入门 1.1 抽象的进步 1.2 对象的接口 1.3 ...

    坦克大战java_project_client&sever;

    一、Java基础知识 1. 类与对象:坦克大战中的各个元素,如坦克、炮弹、墙壁等,都可以抽象为类,通过对象来实例化。理解面向对象的特性,如封装、继承和多态,是实现游戏逻辑的基础。 2. 多线程:游戏中的坦克移动...

    Java官方文档API文档1.6中文版.rar

    在Oracle公司收购SUN后,虽然继续发布Java更新,但未再提供官方中文文档,因此这个版本具有一定的历史价值。 JDK API 1.6_zh_CN.CHM文件包含了Java Development Kit 1.6的所有API详细信息,CHM是Windows系统的帮助...

    java全集.pdf JAVA全集

    #### 二、Java基础知识 **2.1 配置环境** 为了能够在计算机上运行Java程序,需要配置Java开发环境,主要步骤包括: - 下载并安装JDK(Java Development Kit)。 - 设置环境变量JAVA_HOME。 - 设置PATH变量,包含...

    java实现网络文件传输

    总结来说,"java实现网络文件传输"项目涵盖了网络编程的基本原理和实际应用,通过学习和实践这个项目,开发者可以深入了解Java Socket通信,文件I/O,以及如何设计可靠的网络文件传输系统。同时,分析源码有助于提升...

    JAVA_Thinking in Java(中文版 由yyc,spirit整理).chm

    JAVA_Thinking in Java(中文版 由yyc,spirit整理).chm ------------------------------------------------- 本教程由yyc,spirit整理 ------------------------------------------------- “Thinking in Java...

    java版局域网聊天文件传输

    【Java版局域网聊天文件传输】是一种使用Java编程语言实现的本地网络通信应用,它集成了文件传输和聊天功能,使得用户可以在同一局域网内的设备之间方便地分享文件和进行文字交流。这一技术主要涉及到以下几个核心...

    java面试题(整理)

    #### 一、Java基础知识 1. **您看过哪些Java方面的书籍?** 这个问题旨在了解求职者对于Java学习的态度和深度。常见的Java学习书籍包括但不限于: - 《Java核心技术》 - 《Effective Java》 - 《Thinking in ...

    java高级编程复习题.docx

    这篇文档涉及了Java高级编程的多个知识点,...为了完成这些任务,开发者需要熟练掌握Java的基础语法,理解线程同步机制,熟悉GUI组件的使用,能够编写SQL语句并与数据库交互,还要懂得如何在文件系统中操作文件和目录。

    javacore_notes

    ### JavaCore核心知识点详解 #### 一、Java语言特点与执行机制 - **解释执行机制**:...通过以上知识点的总结,我们可以更好地理解Java语言的基础概念及其核心特性。这对于进一步深入学习Java编程技术非常有帮助。

    j2se基础课程资源

    这个资源包为Java初学者提供了一个完整的学习路径,从基本语法到面向对象编程,再到高级特性如多线程和数据库编程,覆盖了成为一名合格Java开发者所需的基础知识。通过学习和实践其中的源代码,你可以加深对Java编程...

Global site tag (gtag.js) - Google Analytics