实验六 输入输出流与文件
一、实验目的
1. 理解数据流的概念
2. 理解Java流的层次结构 3. 理解文件的概念
二、实验要求
1. 掌握字节流的基本使用方法 2. 掌握字符流的基本使用方法 3. 能够创建、读写、更新文件
三、实验内容 (一)运行以下程序
1.使用标准数据流的应用程序
标准数据流指在字符方式下(如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 中元素的个数为:\System.out.println(\中各元素的值为:\for (int i=0;i System.out.print(\在屏幕上显示buffer 元素的值 } System.out.println(); System.out.println(\输出buffer 字符元素:\ System.out.write(buffer, 0, buffer.length); } } 3. 编译、运行KY10_1.java 文件。 2. 使用文件输入输出流的应用程序 1. 程序功能:将保存在本地机当前文件夹中的KY10_2.HTML 文本文件的内容在屏幕上显 示出来,然后将其另存为KY10_2.txt 文件。 2. 编写KY10_2.java 程序文件,源代码如下 import java.io.*; public class KY10_2 { public static void main(String[] args) throws IOException { FileReader in=new FileReader(\建立文件输入流 BufferedReader bin=new BufferedReader(in);//建立缓冲输入流 FileWriter out=new FileWriter(\建立文件输出流 String str; while ((str=bin.readLine())!=null) { //将缓冲区内容通过循环方式逐行赋值给字符串str System.out.println(str);//在屏幕上显示字符串str out.write(str+\将字符串str 通过输出流写入KY10_2.txt 中 } in.close(); out.close(); } } 3. 编译、运行程序 3. 使用随机文件类的应用程序 使用文件输入类FileReader 只能将文件内容全部读入。如果要选择读入文件的内容,可使用随机文件类RandomAccessFile。 1. 程序功能:建立数据流,通过指针有选择的读入文件内容。 2. 编写KY10_3.java 程序文件,源代码如下。 import java.io.*; class KY10_3 { public static void main(String args[]) { String str[]={\try { RandomAccessFile rf=new RandomAccessFile(\System.out.println(\文件指针位置为:\System.out.println(\文件的长度为:\rf.seek(rf.length()); System.out.println(\文件指针现在的位置为:\for (int i=0; i<3; i++) rf.writeChars(str[i]); // 字符串转为字节串添加到文件末尾 rf.seek(10); System.out.println(\选择显示的文件内容:\String s; while ((s=rf.readLine())!=null) System.out.println(s); rf.close(); } catch (FileNotFoundException fnoe) {} catch (IOException ioe) {} } } 3. 编译并运行程序 4.使用数据输入输出流与文件输入输出流类的应用程序 使用数据输入流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(\DataOutputStream dout = new DataOutputStream(fout); dout.writeInt(1); dout.writeChars(\罗马\dout.writeInt(2); dout.writeChars(\北京\dout.close(); } catch (IOException ioe){} try { FileInputStream fin = new FileInputStream(\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. 编译并运行程序 (二)补全填空 1.文件加密 程序模板 SecretExample.java import java.io.*; public class SecretExample { public static void main(String args[ ]) { File fileOne=new File(\ fileTwo=new File(\ char b[]=new char[100]; try{ FileReader in=【代码1】//创建指向fileOne的字符输入流 FileWriter out=【代码2】//创建指向fileTwo字符输出流。 int n=-1; while((n=in.read(b))!=-1) { for(int i=0;i b[i]=(char)(b[i]^'a'); }

