使用java输入输出流实现文件的复制

时间:2019-05-15 12:55:19下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《使用java输入输出流实现文件的复制》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《使用java输入输出流实现文件的复制》。

第一篇:使用java输入输出流实现文件的复制

使用java输入输出流实现文件的复制:

public class Test {

public static void copy(File source,File target){

InputStream in=null;

OutputStream out=null;

try {

in=new BufferedInputStream(new FileInputStream(source));out=new BufferedOutputStream(new FileOutputStream(target));byte[] buff=new byte[1024];

while(in.read(buff)>0){

out.write(buff);

}

} catch(Exception e){

// TODO: handle exception

e.printStackTrace();

}finally{

try {

if(in!=null)

in.close();

if(out!=null)

out.close();

} catch(Exception e2){

// TODO: handle exception

}

}

}

public static void main(String[] args){

// TODO Auto-generated method stub

}

}

第二篇:java 文件与输入输出流

实验2文件与输入输出流(1)

一、实验目的 能够使用File类表示文件或目录,获取相关信息,并进行文件操作;  能够利用InputStream和OutputStream的子类进行字节读、写操作,明白其优点及不足;

 能够用FileInputStream和FileOutputStream进行文件读写的操作;  理解“逐层包装”思想,能够利用“数据流”(DataInputStream和DataOutputStream)包装字节流,方便各类数据的读写;

 能够利用“缓冲字节流”(BufferedInputStream和BufferedOutputStream)包装字节流,加快数据的读写速度;

 熟知System.in和System.out是PrintStream的实例。

二、实验步骤

在Eclipse环境中导入项目“code(lab_2)”,然后按要求完成各小题:

1.打开FileTest.java文件,请按下列要求进行操作:

(1)按要求填充程序所缺代码;

(2)程序的运行需要用到一个命令行参数,请分别用一个文件、目录作参数来运行程序,看一看结果有什么不同。

(在Eclipse中设置命令行参数方法:Run/Open Run Dialog „/(x)=Arguments设置)

2.在上一题的基础上,修改程序,使之具备输出指定目录下所有子目录中文件绝对路径名、大小的功能,如下所示:

子目录:C:jdk1.6.0sample

子目录:C:jdk1.6.0samplewebservices

子目录:C:jdk1.6.0samplewebservicesEbayServer

文件: C:jdk1.6.0samplewebservicesEbayServerbuild.properties,大小: 512 字节 文件: C:jdk1.6.0samplewebservicesEbayServerbuild.xml,大小: 3168 字节1

……

提示:参考课件 FileSpace.java内容,通过一个以“路径名”为参数的静态方法来实现:该方法先判断“路径名”是一个文件,还是一个目录?如果是文件,则输出其绝对路径和大小;若为一个目录,则先显示目录绝对路径,再列出该目录下的所有子目录和文件,通过循环和递归方法来执行后续处理。

3.文件FileOutputStreamTest.java的功能是:利用FileOutputStream类向myfile.txt文件写入'0'~'9'和“用字节流写入文件内容”,请填充程序所缺代码,并运行程序。然后打开myfile.txt文件,查看其内容是否与要求相符?

4.文件FileInputStreamTest1.java的功能是:利用FileInputStream类以“逐字节”方式读取myfile.txt文件内容,并输出。请填充程序所缺代码,并运行程序。问题:为什么程序输出的内容为乱码?

5.在FileInputStreamTest1.java的基础上,编写程序FileInputStreamTest2.java,利用FileInputStream类以“字节数组”方式读取myfile.txt文件内容,能正确输出,解决乱码问题。

思考题:乱码问题是怎样解决的?

6.若要将信息“Java开发典型模块大全”(书名)、“明日科技”(作者)、79.5(价格)等信息以UTF、double类型保存到文件books.txt中,请用“数据流”类编程实现。

第三篇:关于java文件流的简单示例

package myjava;

import java.io.*;

public class InputStreamDemo1 {

//根据文件返回一个输入流 private FileInputStream getFileInputStream(File file){FileInputStream fis=null;try{fis=new FileInputStream(file);}catch(IOException e){System.out.println(e.getMessage());}return fis;} //根据文件返回一个输输出流 private FileOutputStream getFileOutputStream(File file){FileOutputStream fos=null;try{fos=new FileOutputStream(file);}catch(IOException e){System.out.println(e.getMessage());}catch(Exception e1){System.out.println(e1.getMessage());}return fos;} public static void main(String args[]){File input=new File(“G:Java网络编程.pdf”);File output=new File(“G:output.txt”);InputStreamDemo1 isd=new InputStreamDemo1();FileInputStream fis=isd.getFileInputStream(input);FileOutputStream fos=isd.getFileOutputStream(output);int b=0;

}} try {while((b=fis.read())!=-1){fos.write(b);} fis.close();fos.close();} catch(Exception e){System.out.println(e.getMessage());}

第四篇:Java 实验 文件管理与IO流

作业要求:每个题保存为一个.java文件,保存在同一工程文件夹中,文件夹的名字为E:Java你的班级+姓名,例如:E:Java信息11张三。

注意:上交的程序包含程序的执行结果,以注释的形式附在程序后面。

实验六文件管理与I/O流

一、实验目的1.熟悉用文件File类创建、删除、查看文件或目录。

2.字节流、字符流、缓冲流、随机流等流式文件的创建,读写操作。

3.用字符流和缓冲流从键盘接受字符串的方法。

二、实验内容

1.先运行该程序。源文件是sy6_1.java。然后按【思考问题】分析程序。

import java.io.*;

public class sy6_1{

public static void main(String[] args)throws Exception

{

int x=0;

File Mypath;

Mypath=new File(“E:aaaa”);

if(!Mypath.exists())

{System.out.println(“创建新目录”);Mypath.mkdir();}

else System.out.println(“目录已存在”);

File Myfile1=new File(Mypath,“myfile1.txt”);

File Myfile2=new File(Mypath,“myfile2.txt”);

File Myfile3=new File(Mypath,“myfile3.txt”);

FileInputStream Fin=new FileInputStream(Myfile1);

FileOutputStream Fout=new FileOutputStream(Myfile1);

DataOutputStream Dout=new DataOutputStream(new FileOutputStream(Myfile2));

DataInputStream Din=new DataInputStream(new FileInputStream(Myfile2));

PrintWriter PWout=new PrintWriter(new FileWriter(Myfile3));

RandomAccessFile RAread=new RandomAccessFile(Myfile3,“r”);

String str;

int num1;

BufferedReader buf;//缓冲流

buf=new BufferedReader(new InputStreamReader(System.in));

System.out.print(“请输入一个小于255整型数:”);

while(!(str=buf.readLine()).equalsIgnoreCase(“q”))

{ System.out.print(“请输入另一个小于255整型数,按Q结束:”);

num1=Integer.parseInt(str);

Fout.write(num1);

}Fout.close();

System.out.println(“你刚输入的数据是:”);

while((x=Fin.read())!=-1)

{ System.out.println(x);

}Fin.close();

System.out.print(“请输入int范围内整型数:”);

while(!(str=buf.readLine()).equalsIgnoreCase(“q”))

{ System.out.print(“请输入另一个整型数,按Q结束:”);

num1=Integer.parseInt(str);

Dout.writeInt(num1);

}Dout.close();

int leng=Din.available()/4;

int xxx=0;

while(xxx

{ xxx++;

x=Din.readInt();

System.out.println(x);

} Din.close();

System.out.print(“请输入第一个字符串:”);

while((str=buf.readLine())!=null)

{ System.out.print(“请输入另一个字符串,按Ctrl+Z结束:”);

PWout.println(str);//写入myfile3.txt中

} PWout.close();

RAread.seek(0);

while(RAread.getFilePointer()

{System.out.println(RAread.readLine());//从myfile3.txt中一行一行读并输出在控制台上

} RAread.close();

System.out.println(“完成”);

}

}

【思考问题】

① 本程序共用到哪几种流式文件?都用于做什么?

答:基本输入输出流:System.in.输入(从键盘)

System.out.输出(显示器)

字节流类:FileOutputStream 文件输出

FileInputStream 文件输入

DataOutputStream数据输出

DataInputStream数据输入

字符流类:PrintWriter输入

缓冲文件流:BufferedReader

② 运行完程序后,请用“我的电脑”找到创建的文件,并分别打开文件看其内容,你

看到的是你输入的数据吗?

答:myfile1和myfile2中的数据非输入数据,myfile3中可以看见输入的数据。③ 将创建输入流对象Fin放在输出流Fout前,看发生什么?

④ 对第二种流式文件判断文件占用字节的长度用available()方法,而此处用int

leng=Din.available()/4;为什么除以4?

2.按照第1题的内容,修改程序要求每次重新运行不覆盖原内容,把所有其它流式文件全部改用随机流式文件来实现,新的数据填加在文件尾,然后读出校验。

import java.io.*;

public class sy6_2 {

public static void main(String[] args)throws Exception {

File Mypath;

Mypath = new File(“E:aaa”);

if(!Mypath.exists())

{System.out.println(“创建新目录”);Mypath.mkdir();}

else System.out.println(“目录已存在”);

File Myfile1 = new File(Mypath, “myfile1.txt”);

File Myfile2 = new File(Mypath, “myfile2.txt”);

File Myfile3 = new File(Mypath, “myfile3.txt”);

RandomAccessFile rf1 = new RandomAccessFile(Myfile1, “rw”);

RandomAccessFile rf2 = new RandomAccessFile(Myfile2, “rw”);

RandomAccessFile rf3 = new RandomAccessFile(Myfile3, “rw”);

String str;

int num1;

BufferedReader buf;//缓冲流

buf = new BufferedReader(new InputStreamReader(System.in));

System.out.print(“请输入一个小于255整型数:”);

rf1.seek(rf1.length());//指针移到文件尾进行写操作

while(!(str=buf.readLine()).equalsIgnoreCase(“q”))

{ System.out.print(“请输入另一个小于255整型数,按Q结束:”);num1=Integer.parseInt(str);

rf1.write(num1);//将整型数作为ascii码值所对应的字符写入myfile1.txt中}

rf1.seek(0);//指针移到文件头进行读操作

int x=0;

while((x=rf1.read())!=-1)

{

System.out.println(x);

} rf1.close();

System.out.print(“请输入int范围内整型数:”);

rf2.seek(rf2.length());

while(!(str = buf.readLine()).equalsIgnoreCase(“q”)){

System.out.print(“请输入另一个整型数,按Q结束:”);

num1 = Integer.parseInt(str);

rf2.writeInt(num1);

}

int x1 = 0;

for(int l = 0;l

{

rf2.seek(l*4);

x1 = rf2.readInt();

System.out.println(x1);

}

rf2.close();

System.out.print(“请输入第一个字符串:”);

rf3.seek(rf3.length());

while((str = buf.readLine())!= null){

System.out.println(“请输入另一个字符串,按Ctrl+Z结束:”);rf3.writeUTF(str);//写入myfile3.txt中

}

rf3.seek(0);

while(rf3.getFilePointer()< rf3.length()){

System.out.println(rf3.readUTF());//从myfile3.txt中读出字符串并输出在控制台上

}

rf3.close();

System.out.println(“完成”);

}

}

三、实验报告要求

1.回答第1题【思考问题】提出的问题。

2.写出第二题要求的源程序。

第五篇:08 Java当中的输入输出流的学习笔记 基本IO

流的分类:

输入流(InputStream/Reader),输出流(OutputStream/Writer)

字节流(InputStream,OutputStream)字符流(Reader/Writer)

节点流(InputStream/Reader,OutputStream/Writer),处理流(过滤流)BufferedIO(缓冲),DataInputStream/DataOutputStream(各种数据类型), InputStreamReader/OutputStreamWriter(转换流),ByteArrayInputStream/ ByteArrayOutputStream(内存数组流)PipedInputStream/ PipedOutputStream(管道流,线程间通讯)

1.或者OutputStream可以创建一个文件,但是不能创建一个文件夹。

2.InputStream(OutputStream)和Reader(Writer)的区别在于字节和字符,对于非标准ASCII

编码(占用两个字节的字符)字节流会出现乱码。

3.使用bufferedIO是为了readline()方法和write(s),s是一个字符串。而且

bufferedinPutStream有mark和reset方法。

4.InputStreamReader和OutputStreamWriter可以把字节流转换为字符流。

InputStreamReader需要和InputStream套接。OutputStreamWriter需要和OutputStream套接。OutputStreamWriter可以写一个字符串。还有一个典型的应用就是在于对于System.in的处理。

InputStreamReaderisr =

newInputStreamReader(System.in);

BufferedReaderbr = newBufferedReader(isr);

System.in是一个InputStream的子类,需要把它改成InputStreamReader然后使用BufferedReader读出每行的内容。

5.DataInputStream,DataOutputStream是用来对付原始的数据类型,比如int,long,double,float 和UTF。

6.ByteArrayInputStream和ByteArrayOutputStream在内存中创建一个字节数组。

import java.io.*;

publicclassTestDataStream {

publicstaticvoid main(String[] args){

ByteArrayOutputStreambaos =

newByteArrayOutputStream();//在内存中创建了一个内存字节数组,并对上一个管道baos DataOutputStream dos =

newDataOutputStream(baos);//使用DataOutputStream是为了使用writeDouble,writeBoolean等方法

try {

dos.writeDouble(Math.random());//在字节数组当中写入8个字节的double类型的数字 dos.writeBoolean(true);//在字节数组中写入一个boolean类型的true,占用1个字节

ByteArrayInputStreambais =

newByteArrayInputStream(baos.toByteArray());//bais也对到由baos对应的内存字节数组

System.out.println(bais.available());//内存数组当中有多少字节可用(也就是说被写入了多少个字节的内容)

DataInputStream dis = newDataInputStream(bais);//使用DataInputStream是为了使用readDouble,readBoolean等方法

System.out.println(dis.readDouble());//先写进去的东西要先读是队列

System.out.println(dis.readBoolean());//后写进去的东西要后读

dos.close();

dis.close();

} catch(IOException e){

e.printStackTrace();

}

}

}

7.PipedInputStream和PipedOutputStream是管道流,用于线程间的通信。一个线程的PipedInputStream对象必须从另一个线程的PipedOutputStream对象读取输入。要使用管道流,必须同时构造管道输入流和输出流。

8.Print流就只有输出流,没有输入流。

Print流不会抛异常,而且都会自动flush。

System.setOut(ps);//修改系统输出的位置

9.Object流和序列化问题

将对象转换为字节流并保存起来(文件,磁盘,网络),这种机制叫做对象序列化。并在日后还原这个对象,这种机制叫对象的反序列化。将一个对象保存到永久存储设备上称为持续性。

使用ObjectOutputStream和ObjectInputStream来专门用来把一个object写入或者读出硬盘上。(常用于游戏存盘?)其做法是把整个的object写入磁盘或者读出。

当一个对象被序列化时,只保存对象的非静态成员变量,不能保存任何的成员方法和静态的成员变量。如果一个对象的成员变量是一个对象,那么这个对象的数据成员也会被保存。

为了把一个类的对象写到硬盘或者网络,就必须实现serializable接口或Externalizable接口。区别是在于和Externalizable(外部化)是接口是抽象方法,必须被实现。而Serializable(序列化)是一个标示形接口,也就是说,这样的接口是没有方法。Java当中还有很多这样的接口。但是我们必须实现这个接口,这个接口的意义是在于让java编译器知道这个该类需要实现了这个功能。要注意,如果该类没有实现这个接口,会抛出一个NotSerializableException。

有的时候,一个可序列化的对象包含对某个不可序列化的对象的引用,那么整个序列化操作将会失败,并且会抛出一个NotSerializableException。为了解决这个问题,可以将这个引用标记为transient,那么对象仍然可以序列化。也就是说,transient修饰的成员变量在序列化的时候,是不给予考虑的,也就是说被transient修饰的内容是不会被保存的。

Externalizable接口当中有两个抽象方法,必须被实现.

下载使用java输入输出流实现文件的复制word格式文档
下载使用java输入输出流实现文件的复制.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    Java实验五 IO流的一般使用

    Java实验五IO流的一般使用 实验目的:掌握文件类的使用,了解一般流的基本应用。加深处理代码的能力。 实验内容: import java.io.* ;public class lijun43 { public static void......

    使用java实现面向对象编程总结

    第一章:抽象和封装 1,为什么使用面向对象 1.1:万事万物皆对象,面向对象就是采用“现实模拟”的方法设计和开发程序。 2,使用面向对象进行设计 2.1:面向对象设计三部曲 1,发现类。 2......

    Java五子棋实现报告

    一、实验目的 (1) 使用Java编写五子棋程序 (2) 掌握编写过程的一些类和类成员的使用,并且了解五子棋制作过程的一些步骤和了解一些算法。 二、实验环境 在电子楼2楼,装有My Eclip......

    java流实验内容及代码

    实验7 流(2学时) 一、实验目的 1. 熟悉流类库中各种常用流的使用方法。 2. 能够使用流类实现基本的文件读写。 二、实验内容 1. 编写程序,在控制台窗口提示输入两个整数,然后接......

    Java中输出流(五篇材料)

    从输入流中当前位置读入一个字节的二进制数据,以此数据为低位字节,补足16位的整型量(0~255)后返回,若输入流中当前位置没有数据,则返回-1 int read(byte b) 在数组中,并返回所读......

    《复制、剪切、粘贴文件》教学设计

    教学背景:在农村,还没有普及计算机,不是家家户户都有计算机,而信息技术这门课程也是最近才在农村小学中出现。因此,对于孩子们来说,“计算机”是一个充满神奇的名词,对他们有着极......

    课题4:流和文件

    实习课题21:流和文件 实训目的  会使用java.io包中的常用类进行操作 实训内容 练习一: 在C:下创建一个名为Letter的目录。 编写一个程序来显示下列选项: 1:编写请假条 2:查看请假......

    实验12:Java高级IO流程序设计

    实验12:Java高级I/O流程序设计 实验时间:实验地点: 一、实验目的及要求 (1)掌握文件类File的使用。 (2)理解随机存取文件类RandomAccessFile的使用。 二、实验设备环境及要求三、实......