实验目的:

1.理解I/O流的概念,掌握其分类。

2.掌握文本文件读写、二进制文件读写。

实验内容:

        1.编程实现任意文件的复制功能。

2.利用文件流和缓冲流复制文件的内容。

3.创建文件和显示文件的名称和内容。

4.接收键盘输入的字符串并显示在屏幕上。

实验步骤:

1.编写一个程序将字符串“明月松间照,清泉石上流。”写入C:\a.txt中,并实现对该文件的读取。

源代码:

package homework.实验9_输入输出流;

import java.io.BufferedWriter;

import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

public class sy9_1 {
    public static void main(String [] args){
        Scanner sc=new Scanner(System.in);
        String s=sc.nextLine();
        System.out.println("写入字符串 : "+s);
        try {
            BufferedWriter bw=new BufferedWriter(new FileWriter("d:\\a.txt"));
            bw.write(s);
            bw.flush();
            bw.close(); //关闭流
       
} catch (IOException e) {
            e.printStackTrace();
        }
    }
}

运行结果截图:

2. 编写一个程序利用字节流将C:\a.txt中的内容复制到另一个文件b.txt中,并提示“文件复制成功。”。

源代码:

package homework.实验9_输入输出流;

import java.io.*;
public class sy9_2{
    public static void main(String[] args)throws IOException{
        FileInputStream read = new FileInputStream(new File("D:\\a.txt"));
        FileOutputStream wr = new FileOutputStream(new File("D:\\b.txt"));
        byte[] b = new byte[1024];
        int len = 0;
        while((len=read.read(b))!=-1){
            wr.write(b,0,len);
            wr.flush();
        }
        wr.close();
        read.close();
    }
}

运行结果截图:

3. 编写一个程序利用字符流将C:\a.txt中的内容复制到另一个文件b.txt中

源代码:

package homework.实验9_输入输出流;

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

public class sy9_2 {

public static void main(String[] args) {

// TODO Auto-generated method stub

FileReader fr = null;

FileWriter fw = null;

int c = 0;

try {

fr = new FileReader("d://a.txt");

fw = new FileWriter("d://c.txt");

while((c=fr.read())!=-1) {

fw.write(c);

}

System.out.println("文件复制成功");

}catch(FileNotFoundException e) {

System.out.println("文件没找到");

}catch(IOException e) {

System.out.println("输入错误");

}finally {

try {

fw.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

try {

fr.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

4.以下程序实现对象序列化和反序列化,请把程序补充完整。

Student 类:

import java.io.Serializable;

public class Student implements Serializable{

private String name;

private int age;

private String address;

public String getName() {

return name  ;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age ;

}

public void setAge(int age) {

this.age = age;

}

public String getAddress() {

return address ;

}

public void setAddress(String address) {

this.address = address;

}

}

测试类:

import java.io.*;

public class Test {

public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException {

Student mStudent1 =new Student();

mStudent1.setName ("张三");

mStudent1.setAge(18);

mStudent1.setAddress("武汉市");

//ObjectOutputStream代表对象输出流,它的writeObject(Object obj)方法可对参数指定的obj对象进行序列化,

//把得到的字节序列写到一个目标输出流中,在这里写到文件输出流。

ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("D:/Student.txt"));

oos.writeObject(mStudents1 );

oos.close();

System.out.println("序列化完成");

//ObjectInputStream代表对象输入流,它的readObject()方法从一个源输入流中读取字节序列,

//再把它们反序列化为一个对象,并将其返回。

ObjectInputStream ois = new ObjectInputStream(new FileInputStream("D:/Student.txt"));

Student mStudent2 = (Student ) ois.readObject();

ois.close();  System.out.println(mStudent2.getName()+"\t"+mStudent2.getAge()+"\t"+mStudent2.getAddress());

}

}

实验小结

通过数据流、序列化和文件系统提供系统输入和输出。Java把这些不同来源和目标的数据都统一抽象为数据流。Java语言的输入输出功能是十分强大而灵活的,美中不足的是看上去输入输出的代码并不是很简洁,因为你往往需要包装许多不同的对象。

  1. 序列化和反序列化概念

把对象转换为字节序列的过程称为对象的序列化。

把字节序列恢复为对象的过程称为对象的反序列化

  对象的序列化主要有两种用途:

  1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;

  2) 在网络上传送对象的字节序列。

java--第9章 输入输出流相关推荐

  1. java io字符输出流_灵魂一击!详解Java中的IO输入输出流

    什么是流?流表示任何有能力产生数据的数据源对象或者是有能力接收数据的接收端对象,它屏蔽了实际的I/O设备中处理数据的细节. IO流是实现输入输出的基础,它可以很方便地实现数据的输入输出操作,即读写操作 ...

  2. 【Java基础】Java IO编程:输入输出流、内存流、打印流、缓冲流BufferedReader、扫描流Scanner、序列化与反序列化

    文章目录 第11章.Java IO编程 11.1 文件操作类:File 11.2 字节流与字符流 字节输出流:OutputStream OutputStream类 FileOutputStream类 ...

  3. java之九 基本输入输出流

    流的概念 视频课堂:[免费]JAVA面向对象高级编程-1-数组的学习-张晨光的在线视频教程-CSDN程序员研修院 Java程序通过流来完成输入/输出.流是生产或消费信息的抽象.流通过Java的输入/输 ...

  4. Java基础知识(七) 输入输出流

    Java基础知识 输入输出流 1. Java IO流的实现机制是什么 2. 管理文件和目录的类是什么 3. Java Socket是什么 4. Java NIO是什么 5. 什么是Java序列化 6. ...

  5. java的 I/O 输入输出流详解

    I/O 输入输出流 流的定义: 流就是程序和设备之间嫁接起来的一根用于数据传输的管道,这个管道上有很多按钮,不同的按钮可以实现不同的功能. 这根用于数据传输的管道就是流,流就是一根管道 流一定是类,但 ...

  6. 第八次 java实验 紫金学院 输入/输出流

    一.实验目的 熟悉流--输入/输出流的基本概念. 掌握常用输入/输出流的使用. 掌握文件与文件字节流操作(重点). 二.实验原理及说明 在Java中把不同的数据源和程序间的数据传输(输入和输出或者数据 ...

  7. 自考2019版《C++程序设计》04747,第七章 输入/输出流(附课后习题答案)

    考试题型:主要在选择题.填空题,比分占5%左右. 第一节 流类简介 1.在C++中,输入输出时用流来完成的.C++的输出操作将一个对象的状态转换成一个字符序列,输出到某个地方.输入操作也是从某个地方接 ...

  8. java inputstream字节流_Java输入输出流ByteArrayInputStream和ByteArrayOutPutStream

    public class ByteArrayInputStream extends InputStream ByteArrayInputStream 包含一个内部缓冲区,该缓冲区包含从流中读取的字节. ...

  9. java实验报告9 输入输出流

    实验目的 1.理解Java技术体系中"流"的概念. 2.掌握System.in和System.out的基本使用方法 3.掌握字节流和字符流的常用类及使用方法. 4.掌握Java程序 ...

最新文章

  1. jQuery日期选择器插件date-input
  2. 【Python CheckiO 题解】Text Editor
  3. 线程的特点 java 1615387415
  4. 关于captcha使用The _imagingft C module is not installed的错误处理
  5. Flutter代码锦囊---根据环境选择URL地址
  6. 【经验之谈】碰到了放养式的研究生导师,在读研期间该怎么做?
  7. 计算机组成与系统 报告,计算机组成与系统结构课设报告.docx
  8. 飞克速读软件的训练法
  9. 解读swarm最新资讯,主网8.2号开始产BZZ
  10. linux挖矿检测,详谈挖矿木马的检测和解决方案
  11. 笔记本自带键盘与IDEA快捷键冲突
  12. 如何做出好看的三维平面地图?
  13. Android图片处理Glide 4 介绍
  14. 流形学习 manifold learning--自学小结(2)之 Isomap
  15. Linux中chkconfig工具详解(世间有许多美好的东西,但真正属于自己的却并不多)
  16. 洛谷P1386座位安排
  17. 一些简单好玩的Python编程游戏
  18. NLP论文解读:无需模板且高效的语言微调模型(下)
  19. ezboot not found 虚拟机安装_如何在 Linux 上安装 Minecraft 服务器
  20. linux打通任督二脉百度网盘,2020-07-28-打通多平台发布的任督二脉

热门文章

  1. 一个会做饭的程序员如何每天给女朋友带不同的便当?
  2. ipad手写笔推荐品牌,推荐性价比最高的平替苹果笔
  3. boosting股票量化分析算法
  4. 5次Shift会触发粘滞键的妙用(转)
  5. vba判断文件编码格式_[VBA]Excel输出utf-8编码格式文件 使用WideCharToMultiByte
  6. 体教融合背景下棒垒球项目的青训工作
  7. 如何播放梅西百货的感恩节大游行2019
  8. 可以实现微信小程序父子组件实时通信的插件
  9. MySQL时间比较大小
  10. 裸奔必备:沙盘Sandboxie 4.19.4最新版下载