实验五 输入输出流

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验五输入输出流
一、实验目的
1.掌握文件的使用
2.掌握字节I/O流、字符类I/O流、缓冲流、数据流等常用流的使用。

3.熟悉对象流、RandomAccessFile类的使用。

二、实验内容
1.利用各种常用IO流的处理方法,编写Java应用程序。

三、实验步骤与要求
第1题文件加密
编写一个Java应用程序,将已存在的扩展名为.txt的文本文件加密后存入另一个文本文件中。

package four;
import java.io.*;
public class file {
public static void main(String args[])
{
File readFile =new File("Student.txt"),
writeFile =new File("Hello.txt");
String s="欢迎来到北京 welcome";
char b[]=s.toCharArray();
try{
FileWriter out=new FileWriter(readFile,true);
out.write(b);
out.close();
FileWriter tofile=new FileWriter ("hello.txt");
for(int i=0;i<b.length;i++)
{
b[i]=(char)(b[i]^'w');
}
String secret=new String(b);
System.out.println("原文:"+s);
System.out.println("密文:"+secret);
tofile.write(secret);
tofile.close();
FileReader inOne=new FileReader("Hello.txt");
int t=0;
System.out.println("存入后:");
while((t=inOne.read(b,0,2))!=-1)
{ String str=new String(b,0,2);
System.out.println(str);
}
inOne.close();
}
catch (IOException e){
System.out.println(e);
}
}
}
第2题读写基本类型数据
编写一个Java应用程序,将若干基本数据写入到一个文件,然后再按顺序读出。

package five;
/*第2题读写基本类型数据
编写一个Java应用程序,将若干基本数据写入到一个文件,然后再按顺序读出。

*/
import java.io.*;
public class read {
public static void main(String args[])
{ try{
FileOutputStream os=new FileOutputStream("data.txt");
DataOutputStream outdata=new DataOutputStream(os);
outdata.writeInt(99);
outdata.writeShort(23);
outdata.writeDouble(23.34535342132);
outdata.writeFloat(3.123221312f);
outdata.writeLong(2132445);
outdata.writeChar('O');
outdata.writeByte(2);
outdata.writeBoolean(true);
}
catch(IOException e){ System.out.println( "int:" );}
try{
FileInputStream ns=new
FileInputStream("data.txt");
DataInputStream intdata=new DataInputStream(ns); System.out.println( "int:" +intdata.readInt());
System.out.println( "short:" +intdata.readShort()); System.out.println( "double:" +intdata.readDouble()); System.out.println( "float:" +intdata.readFloat()); System.out.println( "long:" +intdata.readLong());
System.out.println( "char:" +intdata.readChar());
System.out.println( "byte:" +intdata.readByte());
System.out.println( "boolean:"
+intdata.readBoolean());
}
catch(IOException e){}
}
}
第3题字符输入/输出流以及缓冲流的用法
编写一个Java应用程序,给已存在的文本文件添加行号。

要求该文本文件事先用文本编辑完毕,保存在C:\code目录中,命名为Hello.txt.
实验提示:可将BufferedWriter流和FileWriter流连接在一起,然后使用BufferedWriter流将数据写到目的地。

BufferedReader对象调用readLine()方法可读取文件的一行,BufferedWriter对象调用newLine()方法可向文件写入回行
/package six;
import java.io.*;
public class code {
public static void main(String []args){
File readFile =new File ("Student.txt"),
writeFile=new File("C:\\code\\hello.txt");
if(!writeFile.getParentFile().exists())
{
writeFile.mkdir();
}
//char b[]="欢迎来到北京welcome\nwelcome".toCharArray();
try{//FileWriter t=new FileWriter(readFile,true);
//t.write(b);
// t.close();
FileReader inOne=new FileReader("Student.txt");
BufferedReader inTwo=new BufferedReader(inOne);
FileWriter tofile=new FileWriter("hello.txt");
BufferedWriter out=new BufferedWriter(tofile);
String s=null;
int i=0;
while((s=inTwo.readLine())!=null){
i++;
out.write(i+""+s);
out.newLine();
}
out.flush();
out.close();
tofile.close();
inOne=new FileReader("hello.txt");
inTwo=new BufferedReader(inOne);
while((s=inTwo.readLine())!=null)
{
System.out.println(s);
}
inOne.close();
inTwo.close();
}
catch(IOException e){
System.out.println(e);
}
}
}
四、实验结果
编写源程序并上机调试通过,根据实验过程填写实验报告,并上交源程序代码。

提交电子版实验报告要求: 1、源代码要规范、有详细的注释;每题以文件夹管理各个Java源文件;2、运行结果截图 +心得体会(实验报告)。

打包命
名:“学号姓名java实验几”:如“2012085111小明java实验一”
下周上课前交给学委
选做题
1. 对象流的使用Calendar类的用法参照书7.2)
编写一个Java应用程序,将一个Calendar对象写入文件,然后顺序读出该对象,并验证读出的对象是原始对象的克隆。

实验提示:使用对象流写入或读入对象时,要保证对象是序列化的。

Calendar类实现了Serializable接口,其中接口中的方法对程序是不可见的,因此不需的在类中实现额外方法,Calendar类的对象是序列化对象。

当把一个序列化对象写入到对象输出流时,JVM就会Serializable接口中的方法。

使用对象流很容易获取一个序列化对象的克隆,只需将该对象写入到对象输出流,然后用对象输入流读回的对象就是原对象的一个克隆。

2. RandomAccessFile类的使用
使用RandomAccessFile流读取文件舍去前4行和后6行的内容,使用RandomAccessFile流将一个文件的内容倒置读出。

实验提示:RandomAccessFile类中有一个方法seek(long a),用来移动RandomAccessFile流的读写位置,其中参数a确定读写位置距离文件开头的字节位置。

另外,流还可以调用getFilePointer()方法获取当前流在文件中的读写位置。

(范文素材和资料部分来自网络,供参考。

可复制、编制,期待你的好评与关注)。

相关文档
最新文档