`
Jonathan樊
  • 浏览: 77066 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

文件输入输出流的使用

阅读更多

 

 对文件输入输出流的基本使用,我们结合一个简单的例子来说明。

比如,对文件的复制。

   

      最基本的代码如下:

 

 

public boolean filecopy(String start,String end) throws IOException{

 

               //start 是文件原始地址,end 是文件复制的目标地址

 

//创建文件输入流对象

java.io.FileInputStream fis=new java.io.FileInputStream(start);

//创建文件输出流对象

java.io.FileOutputStream fos=new java.io.FileOutputStream(end);

 

           //得到流中的字节,并且,将其输出到指定文件

 

 

int t=0;

while((t=(fis.read()))!=-1){

 

fos.write(t);

 

}

 

// 强制输出

fos.flush();

//关闭输入流

fis.close();

//关闭输出流

fos.close();

 

return false;

 

 

}

 

 

throws IOException  就是对异常的处理。也可以使用try catch.(如果,不进行异常处理,程序就会报错)

 

文件输入输出流的对象,都是存在于内存中的。我们复制一个文件时,就是,先将,文件从硬盘(外存),输入到内存,然后,从内存输出到目标地址。

 

 java.io 包下,有一个FileInputStream,和FileInputStream类,继承自 java.io.InputStream   ,java.io.OutputIstream  类。

 

FileInputStream 从文件系统中某个文件中获得输入字节。 FileInputStream有三个构造方法,此时,我们选取了 使用一个文件的路径来创建输入流对象 fis,同理,来创建了输出流对象,fos.

 

fis调用read()方法来读取文件的字节。read()方法会有一个返回值,可以通过返回值来判断是否读取结束。当,读取结束时,read()会返回 -1.

 

若字节全部读取结束,再写入输出,可能因为文件较大,会出现内存内存不足的情况,为了解决这个问题,选择了这个方法:读取一个字节后,立刻写入输出。直到,fis.read()=-1,此时表示文件读取结束,此时,写入输出,也会结束了。

 

fos.flush(); flush() 是强制输出,因为内存处理数据的速度大于外存速度,可能出现内存已经处理结束,而外存没有,数据会堵塞在 输出流中,为了防止这一问题,强制把数据输出。

 close(),则是关闭流,并释放系统资源。

 

这段程序的执行效率是非常低的。因为外存和内存速度差距是很大的。这时,我们可以考虑 缓存。缓存的存在就是为了平衡内外存的速度。 因此,代码优化如下:

 

 

/*

* 对文件内容进行复制

     *  String start,原始文件的地址

     *  String end ,目标文件的地址

*/

 

 

public boolean bufferedcopy(String start,String end) throws IOException{

 

  

 

//创建文件输入流对象

File sta=new File(start);

InputStream ins=new FileInputStream(sta);

 

//构造输入缓冲流

BufferedInputStream bis=new BufferedInputStream(ins);

//构造输出缓冲流

File en=new File(end);

OutputStream out=new FileOutputStream(en);

 

BufferedOutputStream bos=new BufferedOutputStream(out);

 

 

 

           //得到流中的字节,并且,将其输出到指定文件

 

int i=0;

 

while((i=(bis.read()))!=-1){

 

bos.write(i);

 

}

 

// 强制输出

out.flush();

//关闭输入流

ins.close();

//关闭输出流

out.close();

 

return true;

 

 

}

 

笔者,测试了这两段代码的效率。复制一部1.2G 的电影,第一段代码,使用将近4个小时还没完!而第二段代码,则快了很多,使用了10分钟左右。

 

 

 

 

2
4
分享到:
评论
2 楼 Jonathan樊 2011-07-29  
uuid198909 写道
代码格式啊,lz

格式不对么?求指教~~刚学java  不久
1 楼 uuid198909 2011-07-27  
代码格式啊,lz

相关推荐

    基于Java文件输入输出流实现文件上传下载功能

    本文将详细介绍基于Java文件输入输出流实现文件上传下载功能的相关知识点,包括文件上传和下载的实现原理、Java文件输入输出流的基础操作、Servlet的使用等。 文件上传 文件上传是指客户端将文件传输到服务器端的...

    文件上传/下载使用输入输出流操作文件

    下面将详细讲解如何使用输入输出流实现文件的上传和下载功能。 一、文件上传 1. **Servlet接收文件**: 在Web应用中,我们通常使用Servlet来处理文件上传请求。Servlet通过`HttpServletRequest`对象的`getParts()...

    Java文件的输入输出流实例详解

    Java 文件的输入输出流实例详解 Java 文件的输入输出流实例详解是指在 Java 中对文件的输入输出操作的详细介绍。输入输出流是一个通道,程序可以通过这个通道读取源中的数据或将数据传送到目的地。 概念部分: ...

    Java的输入输出流实现文件的复制

    1.编写应用程序,使用文件输入输出流实现文件的复制,被拷贝的源文件和复制的目标文件由命令行参数给出。 2.编写应用程序,创建一个文件输出流,向文件中分别写入以下类型数据:int、double和字符串,然后创建一个...

    文件管理和输入输出流.rar

    在IT行业中,文件管理和输入输出流是至关重要的概念,尤其对于程序设计而言。"文件管理和输入输出流"这个主题涵盖了Java、C语言、C++、C#以及JSP等多种编程语言中的相关技术,这些技术使得程序员能够有效地读取、...

    实验9 Java输入输出流.doc

    Java输入输出流是Java编程中一个非常重要的概念,主要用于数据的读取和写入操作,包括文本文件和二进制文件。在实验9中,主要目的是理解和掌握I/O流的分类,以及如何进行文本和二进制文件的读写。 I/O流在Java中被...

    java输入输出流与文件处理

    ### Java输入输出流与文件处理 #### 重要概念与基础知识 **输入输出流与文件处理**在编程领域占据着核心地位,特别是在Java中,通过`java.io`包提供了丰富的类和接口来支持输入输出操作。这包括从键盘读取用户输入...

    Java文件输入输出流.ppt

    Java文件输入输出流,详细描述了java对文件流的操作

    成绩管理系统(基于文件输入输出流)VC++

    《基于文件输入输出流的成绩管理系统实现详解》 在信息技术领域,数据管理是核心任务之一,尤其是在教育场景下,成绩管理是不可或缺的环节。本篇文章将深入探讨如何利用C++编程语言,结合文件输入输出流(File ...

    c++文件输入输出

    在 C++ 中,ofstream 和 ifstream 是两个最基本的文件输入输出流。ofstream 用于将数据写入到文件中,而 ifstream 用于将数据从文件中读取出来。 ofstream ofstream 是一个输出文件流,可以将数据写入到文件中。...

    JAVA输入输出流实验报告

    实验三展示了如何使用输入输出流进行文件的复制。首先,`FileInputStream`从指定的文件读取数据,`FileOutputStream`则用于向新的文件写入数据。同样地,为了处理文本数据,我们在这两个字节流之间插入了`...

    java 输入输出流

    Java中的输入输出流是Java I/O(Input/Output)系统的核心组成部分,允许程序与外部数据源进行交互。在Java中,所有的I/O操作都基于流的概念,流是数据的序列,可以是字节流或字符流。Java I/O库提供了一系列的类来...

    java输入输出流,电子课件

    在实际编程中,通常结合各种输入输出流类与File类进行文件的读写操作。例如,使用FileInputStream和FileOutputStream读写文件,或者使用BufferedReader和BufferedWriter进行高效的文本文件操作。 总之,Java的输入...

    java 文件输入输出流 实例代码

    Java文件输入输出流是Java I/O(Input/Output)体系中的基础部分,它允许程序员读取和写入文件。在Java中,一切皆为对象,所以对于文件的读写操作,我们也是通过对象来实现的。Java的I/O流分为两大类:字节流和字符...

    实验3 输入输出流的实验.doc

    本实验主要介绍了 Java 中的输入输出流,包括 DataInputStream、DataOutputStream、PrintStream 等类的使用,以及对象的序列化和反序列化。通过实验,我们可以掌握流的概念分类、字符串常用操作方法、流的构造和应用...

    计算机网络课程设计 文件输入输出流

    在计算机网络领域,文件输入输出流(File Input/Output Stream)是进行文件操作的基础,尤其在Java编程语言中,它是处理文件数据的核心组件。在这个东大软院的计算机网络课程设计任务中,学生们被要求实现文件和...

    输入输出流和文件操作

    Java程序设计中的输入输出流和文件操作是编程中不可或缺的部分,它们允许程序与外部世界进行数据交换,包括读取文件内容、写入数据到文件、以及处理标准输入输出。以下是对这些概念的详细阐述: 1. **文件和流的...

    coreJava文件输入输出流源代码

    在Java编程语言中,核心Java(Core Java)涵盖了基本的语法和特性,其中包括文件输入输出流(File Input/Output Stream)的概念。文件输入输出流是Java.IO包中的关键类,用于处理程序与磁盘文件之间的数据传输。在这...

    C++实验:输入输出流

    内容1:标准输入输出流重定向 (1) 新建一个工程demo1,设计一个类Time,成员变量为时(h)、分(m)、秒(s)。 (2) 分别为类Time重载提取运算符(>>)和插入运算符(>>)。 a. 输入格式:14 30 15 b. 输出格式:14.5042 (3) ...

Global site tag (gtag.js) - Google Analytics