`
破晓之刃
  • 浏览: 6062 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类

关于文件输入输出对象的初步理解。

 
阅读更多
   关于输入和输出是以内存为对象的,把内存外部的东西调入内存即为输入,将内存里面的内容储存到硬盘等操作则为输出。
    内存和硬盘就好比两个储水的容器,所以要实现里面的内容互换,就必须要管道连接,这就是输入和输出流对象的作用。
    以代码为例:
    package io0222mwj;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class FileTest {

public static void main(String args[]) {

String path = "d:\\aa\\jdk1.6.CHM";
String path1 = "d:\\aa\\复制jdk1.6.CHM";
// 读取文件,得到读取的字符串
byte[] bs = FileTest.readFile(path);

FileTest.writeFile(path1,bs);

long start=System.currentTimeMillis();

FileTest.copyFile2Buffer(path,path1);
long end=System.currentTimeMillis();

long result=end-start;

System.out.println("复制完毕,耗费:"+result+"ms");


}
/**
* 读取文件
* @param path
*             要读取文件的地址
* @return
*/


public static byte[] readFile(String path){
try{
//根据文件地址创建一个文件输入流
java.io.FileInputStream fis=new java.io.FileInputStream(path);
//得到流中的字节数
int size=fis.available();

//定义一个数组,用来存储读取的字节
byte[] bs=new byte[size];
int i=0;
//读取一个字节
int t=fis.read();
while (t!=-1){
//将读取的字节放入数组
bs[i]=(byte)t;
i++;
//读取下一个字节
t=fis.read();
}
//将字节数组包装成字符串
//String str=new String(bs)
//String.out.println(str)

fis.close();
return bs;
} catch (Exception ef){
ef.printStackTrace();
}
return null;
}
/**
* 将读取的文件内容写入指定的文件
* @param path
*            写入的文件
* @param bs
*            已读取、要写入的数据
*/

public static void writeFile(String path,byte[] bs){
try{
//创建文件输出流
java.io.FileOutputStream fos=new java.io.FileOutputStream(path);

for(int i=0;i<bs.length;i++){
byte b=bs[i];
//写出字节
fos.write(b);
}
//强制输出
fos.flush();
//关闭流
fos.close();

}catch(Exception ef){
ef.printStackTrace();
}
}
/**
* 拷贝文件的方法
* @param src
*           要拷贝的源文件地址
* @param path
*            拷贝后的文件地址
*/
public static void copyFile(String src,String path){
try{
//创建文件输入流和输出流
FileInputStream fis=new FileInputStream(src);
FileOutputStream fos=new FileOutputStream(path);

//读取一个字节
int b=fis.read();
while(b!=-1){
//将读取的字节写到文件
fos.write(b);
//读取下一个字节
b=fis.read();
}

fos.flush();
fos.close();
fis.close();
}catch(Exception ef){
ef.printStackTrace();
}
}

public static void copyFile2Buffer(String src,String path){
try{
//创建文件输入输出流
FileInputStream fis=new FileInputStream(src);
FileOutputStream fos=new FileOutputStream(path);

//将文件包装成缓冲流
BufferedInputStream bis=new BufferedInputStream(fis);
BufferedOutputStream bos=new BufferedOutputStream(fos);

//读取一个字节
int b=bis.read();
while(b!=-1){
//将读取的字节写到文件
bos.write(b);
//读取下一个字节
b=bis.read();
}

fos.flush();
fos.close();
fis.close();
}catch(Exception ef){
ef.printStackTrace();
}
}

}


注意点:byte可以自动转成int,因为需要无符号的字节;
        每个方法都只会执行到return,就不会执行了
分享到:
评论

相关推荐

    C# 编写的文件输入与输出

    通过以上的例子,你应该对C#中如何进行文件输入与输出有了初步的理解。在实际项目中,可能还需要涉及到更复杂的情况,比如处理大文件、多线程操作、异步读写等,这些都是进阶的话题。不断实践和学习,你将逐渐掌握更...

    c++程序设计讲义 C++的初步认识 类和对象 运算符重载 继承与派生 多态性与虚函数 输入输出流

    6. 输入输出流:C++的I/O流库(iostream)提供了基于流的输入输出机制,如cin和cout。这些流对象可以方便地与标准输入(键盘)、标准输出(屏幕)以及文件进行交互。流的概念使得输入输出操作更加简洁和灵活。 本...

    java IO输入输出流 学习入门

    #### 一、流的初步理解 在Java中,**流**是一种用于处理数据输入/输出的方式。流的概念非常重要,因为它几乎涉及到所有与数据交互的操作,比如文件读写、网络通信等。 ##### 1.1 流的分类 根据数据传输的方向不同...

    Java课件第八章输入输出流.ppt

    在实际编程中,根据需求选择适当的输入输出流类型,结合文件操作,可以实现各种数据的读写和管理。例如,使用`File`类创建一个文件对象,然后通过`FileInputStream`和`FileOutputStream`读写文件内容。此外,`...

    让一个reducer产生多个输出文件.docx

    Map阶段负责将输入数据进行初步处理,生成键值对形式的中间结果。Reduce阶段则是对Map阶段产生的中间结果进行进一步处理,最终生成可直接使用的输出数据。 通常情况下,一个Reduce任务只会产生一个输出文件。但是,...

    面向对象程序设计实验指导

    3. 初步理解面向对象程序的多文件结构项目的开发和运行步骤。 **实验内容:** 1. 学习建立多文件结构程序项目的方法,通过观察和实践加深理解。 2. 修改并调试程序,解决编译错误。 3. 将程序拆分为三个文件:...

    编程初步C++入门

    13. **输入/输出流(I/O流)**:C++的标准库提供了iostream库,用于处理输入输出操作,如cin用于输入,cout用于输出。 14. **STL(标准模板库)**:STL是C++的一个重要部分,提供了容器(如vector、list、set)、...

    C 程序设计教学课件:Chapter 2 IO Streams.ppt

    总之,C++的I/O流机制为处理输入输出提供了强大而灵活的框架,不仅简化了键盘和屏幕交互,还使得文件操作变得易于理解和实现。通过对流的理解和熟练应用,开发者能够构建出更健壮、可维护的程序,以满足各种数据处理...

    面向对象程序设计及C++.pdf

    最后,第七章详细讲解了C++语言的流类库,这是C++对输入/输出操作提供的一套高级抽象,它包括对标准输入输出流以及文件输入输出流的处理。 本书适合用作高等院校计算机相关专业程序设计课程的教材,也可作为工程...

    C面向对象程序设计实验讲义PPT课件.pptx

    学生需要完成书中的自测题目,确保程序有清晰的输入输出提示,并且易于阅读。这是对C++基本功能的初步掌握。 实验三涉及函数的使用,包括字符串比较和递归程序设计。学生需使用函数模板实现不同类型数据的排序。...

    面向对象程序设计(李爱华)

    第十章“C++语言的输入与输出”讨论了I/O流库,包括iostream和fstream,以及如何使用cin、cout和文件流进行输入输出操作。 最后,第十一章和第十二章分别为“Windows编程初步”和“综合设计实例——简单矢量绘图...

    使用Java理解程序逻辑第2章.zip

    流提供了一种标准化的方式来处理不同类型的输入输出,包括文件、网络和内存。 8. **实践与案例分析**:通常,教程中会通过具体的编程实例来帮助学习者巩固理论知识。这些实例可能涵盖简单的数学计算、字符串操作、...

    面向对象程度设计基础课件 01 第一章 程序设计与C++语言初步.ppt

    算法是解决问题的精确步骤,具有输入、输出、有限步骤和确定性等特点。实体则可以理解为现实世界中的客观事物,它们具有名称、状态(数据)和行为(操作)。 C++是一种强大的、支持面向对象编程的高级语言。在C++中...

    《C语言程序设计教程》习题解答(含答案).pdf

    本文件是关于C++语言程序设计教程的习题解答,内容涉及C++语言概述、变量和...以上知识点是从文件中提取出来的部分习题内容总结得到的,通过这些知识点的学习,可以对C++语言的面向对象编程有初步的理解和应用能力。

    ACCP5.0 S1java第二章作业答案

    7. **输入输出(I/O)**:学习使用Java的InputStream和OutputStream进行文件读写,或者使用Scanner类进行用户交互。 8. **对象的生命周期**:理解对象的创建、使用和垃圾回收机制。 9. **集合框架**:初步接触...

    软件工程初步设计图

    3. **接口设计**:明确模块间的通信方式,包括输入输出接口、调用关系等,确保模块间的协同工作。 4. **数据结构与数据库设计**:设计主要的数据结构,包括表格、字段、索引等,并初步规划数据库的布局和访问策略。...

    cmd初步实现.rar

    通过这个“cmd初步实现”的项目,开发者不仅可以提升C#编程技能,还能加深对操作系统底层概念的理解,包括文件系统、目录结构以及进程的文件操作权限。同时,这也是一个很好的实践机会,学习如何构建命令行工具和...

    JAVA初步学习课件

    6. "Java第十章.ppt"可能是关于文件操作、输入/输出流或者线程,这些都是实际项目开发中常见的需求。 通过这些PPT,学习者可以系统地了解Java语言的各个方面,并通过实践来加深理解。值得注意的是,描述中提到“最...

Global site tag (gtag.js) - Google Analytics