`

实验10 流与文件

阅读更多
一、实验目的
1. 理解数据流的概念
2. 理解Java流的层次结构
3. 理解文件的概念
二、实验要求
1. 掌握字节流的基本使用方法
2. 掌握字符流的基本使用方法
3. 能够创建、读写、更新文件   
三、实验内容
(一)使用标准数据流的应用程序
标准数据流指在字符方式下(如DOS 提示符)程序与系统进行输入输出的方式,键盘和显示器屏幕是标准输入输出设备,数据输入的起点为键盘,数据输出的终点是屏幕,输出的数据可以在屏幕上显示出来。
1. 程序功能:将键盘上输入的字符在屏幕上显示出来
2. 编写KY10_1.java 程序文件,源代码如下。
class KY10_1{
public static void main(String[] args) throws java.io.IOException {
byte buffer[]=new byte[10];
System.out.println("从键盘输入不超过10 个字符,按回车键结束输入:");
int count =System.in.read(buffer);//读取输入的字符并存放在缓冲区buffer 中
System.out.println("保存在缓冲区buffer 中元素的个数为:"+count);
System.out.println("buffer 中各元素的值为:");
for (int i=0;i<count;i++){
System.out.print(" "+ buffer[i]);//在屏幕上显示buffer 元素的值
}
System.out.println();
System.out.println("输出buffer 字符元素:");
System.out.write(buffer, 0, buffer.length);
}
}
3. 编译、运行KY10_1.java 文件。
(二)使用文件输入输出流的应用程序
1. 程序功能:将保存在本地机当前文件夹中的KY10_2.HTML 文本文件的内容在屏幕上显示出来,然后将其另存为KY10_2.txt 文件。
2. 编写KY10_2.java 程序文件,源代码如下
import java.io.*;
public class KY5_4 {
public static void main(String[] args) throws IOException {
FileReader in=new FileReader("KY5_1.HTML");//建立文件输入流
BufferedReader bin=new BufferedReader(in);//建立缓冲输入流
FileWriter out=new FileWriter(" KY5_1.txt",true);//建立文件输出流
String str;
while ((str=bin.readLine())!=null) {
//将缓冲区内容通过循环方式逐行赋值给字符串str
System.out.println(str);//在屏幕上显示字符串str
out.write(str+"\n");//将字符串str 通过输出流写入KY5_1.txt 中
}
in.close();
out.close();
}
}
3. 编译、运行程序
(三)使用随机文件类的应用程序
使用文件输入类FileReader 只能将文件内容全部读入。如果要选择读入文件的内容,可使用随机文件类RandomAccessFile。
1. 程序功能:建立数据流,通过指针有选择的读入文件内容。
2. 编写KY10_3.java 程序文件,源代码如下。
import java.io.*;
class KY10_3 {
public static void main(String args[]) {
String str[]={"First line\n","Second line\n","Last line\n"};
try {
RandomAccessFile rf=new RandomAccessFile("KY5_5.txt", "rw");
System.out.println("\n 文件指针位置为:"+rf.getFilePointer());
System.out.println("文件的长度为:"+rf.length());
rf.seek(rf.length());
System.out.println("文件指针现在的位置为:"+rf.getFilePointer());
for (int i=0; i<3; i++)
rf.writeChars(str[i]); // 字符串转为字节串添加到文件末尾87
rf.seek(10);
System.out.println("\n 选择显示的文件内容:");
String s;
while ((s=rf.readLine())!=null)
System.out.println(s);
rf.close();
}
catch (FileNotFoundException fnoe) {}
catch (IOException ioe) {}
}
}
3. 编译并运行程序
(四)使用数据输入输出流与文件输入输出流类的应用程序
使用数据输入流DataOutputStream 和数据输出流DataInputStream 可以读取或写入任何Java 类型的数据,不用关心它们的实际长度是多少字节。一般与文件输入流FileInputStream 和输出流类
FileOutputStream 一起使用。
1. 程序功能:将整型数据和字符串对象通过数据输出流写到文件中。将文件中的整型数据和字符串对象通过数据输出流读出,并在屏幕上显示文件中的内容。
2. 编写KY10_4.java 程序文件,源代码如下。
import java.io.*;
public class KY10_4
{
public static void main(String arg[])
{
try
{ //添加方式创建文件输出流
FileOutputStream fout = new FileOutputStream("KY5_6.txt",true);
DataOutputStream dout = new DataOutputStream(fout);
dout.writeInt(1);
dout.writeChars("罗马"+"\n");
dout.writeInt(2);
dout.writeChars("北京"+"\n");
dout.close();
}
catch (IOException ioe){}
try
{
FileInputStream fin = new FileInputStream("KY5_6.txt");
DataInputStream din = new DataInputStream(fin);
int i = din.readInt();
while (i!=-1) //输入流未结束时,输入流结束时i 为-1
{
System.out.print(i+" ");
char ch ;
while ((ch=din.readChar())!='\n') //字符串未结束时
System.out.print(ch);
System.out.println();
i = din.readInt();
}
din.close();
}
catch (IOException ioe){}
}
}
3. 编译并运行程序
(五)使用对象输入输出流的应用程序
使用对象流可以直接写入或读取一个对象。由于一个类的对象包含多种信息,为了保证从对象流中能够读取到正确的对象,因此要求所有写入对象流的对象都必须是序列化的对象。一个类如果实现了Serializable 接口,那么这个类的对象就是序列化的对象。Serializable 接口没有方法,实现该接口的类不需要实现额外的方法。
1. 程序功能:保存对象信息到文件,并将文件中的对象信息显示出来。
2. 编写KY10_5.java 程序文件,源代码如下。
import java.io.*;
public class KY5_7 implements Serializable //序列化接口
{
int bh=1;int nl=21;
String xm;
KY5_7(int bh,String xm,int nl)//构造方法
{
this.bh = bh;
this.xm = xm;
this.nl = nl;
}
KY10_5()//构造方法
{
this(0,"",21);
}
void save(String fname)//保存到文件中的方法
{
try
{
FileOutputStream fout = new FileOutputStream(fname);//输出文件流
ObjectOutputStream out = new ObjectOutputStream(fout);//输出对象流
out.writeObject(this); //写入对象
out.close();
}
catch (FileNotFoundException fe){}
catch (IOException ioe){}
}
void display(String fname)//显示文件中对象信息的方法
{
try
{
FileInputStream fin = new FileInputStream(fname);//输入文件流
ObjectInputStream in = new ObjectInputStream(fin);//输入对象流
KY10_5 OO = (KY5_7)in.readObject(); //读取对象
System.out.println(" 类名: "+OO.getClass().getName()+"
"+OO.getClass().getInterfaces()[0]);
System.out.println(" "+OO.bh+" "+OO.xm+" "+OO.nl);
in.close();
}
catch (FileNotFoundException fe){}
catch (IOException ioe){}
catch (ClassNotFoundException ioe) {}
}
public static void main(String arg[])
{
String fname = "KY5_7.obj";
KY10_5 O1= new KY5_7(1,"张驰",14);
O1.save(fname);
O1.display(fname);
}
}
3. 编译并运行程序
分享到:
评论

相关推荐

    java文件流学习实验

    10. **定时器(Timer.java)**:可能在这个实验中,Timer类被用来安排特定时间执行文件流相关的任务,例如定期备份文件。 11. **测试结果.txt**:这可能是一个记录实验结果的文件,包含了运行代码后的输出信息,...

    实验9 Java输入输出流.doc

    在实验9中,主要目的是理解和掌握I/O流的分类,以及如何进行文本和二进制文件的读写。 I/O流在Java中被设计为一系列的类和接口,它们构成了一个层次结构,使得程序员可以方便地处理各种类型的输入输出操作。Java的I...

    C++流类体系与文件操作

    总的来说,理解和掌握C++的流类体系与文件操作是进行高效、灵活的输入/输出编程的关键。通过流类,我们可以轻松地实现不同媒介之间的数据传输,而文件操作则让程序能够持久化数据,为软件开发提供了极大的便利。

    JAVA输入输出流实验报告

    Java中的输入输出流是程序与外部数据交互的重要方式,它允许我们读取和写入数据到各种来源,如键盘、文件、网络等。在Java中,输入输出流分为两大类:字节流(Byte Stream)和字符流(Character Stream)。本次实验...

    Java实验6 输入输出流与文件操作.doc

    Java 输入输出流与文件操作 Java 中的输入输出流(Input/Output Stream)是一种基本的IO机制,用于在程序中进行数据的输入和输出。文件操作是Java编程中常用的技术之一,用于读写文件、存储数据和实现数据的持久化...

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

    通过实验,我们可以掌握流的概念分类、字符串常用操作方法、流的构造和应用、文件流和对象的串行化等知识点。 1. 输入输出流的概念 在 Java 中,输入输出流是指数据从一个地方到另一个地方的传输过程。输入流是指...

    流类库与输入/输出 c++实验报告

    这篇C++实验报告主要涉及了C++中的流类库...这个实验旨在帮助学生熟悉C++的流类库,掌握基本的输入输出操作,包括格式控制、数据类型转换和文件操作。通过实践,学生能够更好地理解如何使用C++进行数据处理和文件管理。

    java的io流文件读写

    4. 转换流(InputStreamReader/OutputStreamWriter):字节流与字符流之间的桥梁,用于在字节流和字符流之间转换。例如,如果要从一个字节输入流中读取字符,可以先将其转换为InputStreamReader,然后通过...

    数据流分析实验报告

    在这个“数据流分析实验报告”中,我们将深入探讨这一主题,结合使用Ubuntu操作系统、LLVM框架以及Pass技术进行实践操作。 首先,数据流分析是一种分析程序的方法,它研究数据在程序执行过程中如何流动。这种分析不...

    操作系统实验:文件系统的模拟

    在计算机科学中,操作系统(OS)是管理计算机硬件与软件资源的核心软件,其中文件系统是其重要组成部分。本实验旨在通过编程实现一个简单的文件系统模拟,帮助学生深入理解文件系统的工作原理。在这个实验中,我们...

    《Java程序设计》上机实验报告实验五流、文件及基于文本的应用.pdf

    在本实验中,我们主要探讨了Java编程语言中与数据流、文件操作以及基于文本的应用相关的概念和技术。实验分为两个部分,旨在加深对Java流和文件处理的理解。 实验的第一个任务是编写一个Java应用程序,该程序接受...

    实验管理系统数据流

    本文将基于给定的“实验室管理系统数据流”文件内容,深入解析其中涉及的数据流图、E-R图、关系模型等关键知识点,旨在揭示实验室管理系统内部的数据处理流程和数据库结构设计。 #### 数据流图(DFD) 数据流图是...

    流媒体实验4

    【流媒体实验4】主要涉及了流媒体技术的实践应用,特别是通过使用RealNetworks的Helix Producer Plus和Helix Server来创建视频点播和广播服务。以下是对实验内容的详细解析: 一、实验目的与要求 实验的主要目标是...

    操作系统实验报告-文件系统

    5. **关闭文件**:完成文件操作后,调用`close()`函数关闭文件流,释放资源。 6. **文件删除**:在操作系统层面,可以使用`remove()`函数删除文件。在模拟文件系统时,我们需要维护一个文件元数据结构,如文件名、...

    文件系统 操作系统实验 C++

    在这个“文件系统 操作系统实验 C++”中,我们将探讨如何使用C++语言来模拟一个基本的文件系统,以加深对文件操作的理解。 首先,文件系统的主要功能包括: 1. **文件命名与定位**:每个文件都有一个唯一的名称,...

    文件I/O实验的实验报告

    实验 单片机I/O 口控制实验 一. 实验目的 利用单片机的P1 口作IO 口,使用户学会利用P1 口作为输入和输出口。 二. 实验设备及器件 IBM PC 机 一台

    基于Linux的流媒体文件系统.pdf

    实验结果显示,基于簇化数据组织结构的流媒体文件系统在读写大文件,尤其是在流媒体文件的处理上,吞吐量比传统Ext2文件系统有明显优势。 整体来看,基于Linux的流媒体文件系统提供了一种专门针对流媒体服务的优化...

    C++ 文件管理 实验报告

    2. 编写一个控制台程序fm2.exe,完成与fm.exe同样的功能,但改用流类库风格文件操作来实现; 3. (选做)参考附件中的程序界面,完成一个具有上述功能的MFC程序(程序名自定,界面操作参考“资源管理器”);为复制...

    操作系统--文件系统实验源代码

    10. **可执行文件**:这部分可能包含实现上述功能的C语言程序,通过编译和运行这些源代码,你可以直观地理解文件系统操作的底层实现。 这个实验不仅有助于理解文件系统的工作原理,还有助于提升Linux操作技能,对...

Global site tag (gtag.js) - Google Analytics