Java实验指导4-io流.doc

上传人:doc321 文档编号:15014588 上传时间:2022-03-04 格式:DOC 页数:14 大小:113KB
返回 下载 相关 举报
Java实验指导4-io流.doc_第1页
第1页 / 共14页
Java实验指导4-io流.doc_第2页
第2页 / 共14页
Java实验指导4-io流.doc_第3页
第3页 / 共14页
Java实验指导4-io流.doc_第4页
第4页 / 共14页
Java实验指导4-io流.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《Java实验指导4-io流.doc》由会员分享,可在线阅读,更多相关《Java实验指导4-io流.doc(14页珍藏版)》请在三一文库上搜索。

1、实验4:输入输出流一、实验目的1. 理解I/O流的概念,掌握其分类,掌握Java I/O基本原理。2. 掌握对硬盘上的文件和目录进行操作的基本方法。3. 掌握FileInputStream、FileOutputStream类的基本使用方法。4. 掌握FileReader类 、FileWriter类的使用。5. 掌握BufferedWriter类 、BufferedWriter类的使用。6. 掌握RandomAccessFile类的使用。7. 掌握对象序列化的方法及ObjectInputStream、ObjectOutputStream类的基本使用方法。二、实验要求本次实验要求以Eclipse为

2、开发平台。三、实验内容与步骤1编写一个Java Application程序,实现如下的设计功能:运行该程序可以列出当前目录下的所有文件。import java.io.*;public class sy1 public static void main(String args)File file= new File(D:);file.mkdir();Filef1=file.listFiles();for(int i=0;if1.length;i+)if(f1i.isDirectory()System.out.println(dirctory is+f1i.getName();elseSystem

3、.out.println(flie is+f1i.getName();2编写一个Java Application程序(文件名为CopyFile.java),要求通过字节流从该文件中读取数据并写入到“temp.txt”文件中去,实现该文件的复制。import java.io.*;public class CopyFile public static void main(String args)int a;byte b=你好吗,逗比.getBytes();tryFileOutputStream out=new FileOutputStream(D:jdk1.8.0_20新建文件夹zzjsrczzj

4、temp.txt); out.write(b);out.close();catch(IOException e)System.out.println(error+e);3编写一个程序(文件名为ReadExample.java),将程序文件本身的内容每行开头添加上行号拷贝到另一个文件tempfile.txt中。import java.io.*;public class ReadExample public static void main(String args)int a;char b=new char18;tryFile f=new File(D:jdk1.8.0_20新建文件夹zzjsrc

5、zzjReadExample.java);FileReader in=new FileReader(f);FileWriter out=new FileWriter(D:jdk1.8.0_20新建文件夹zzjsrczzjtempfile.txt);while(a=in.read(b,0,18)!=-1)String s=new String(b,0,18);out.write(b);System.out.print(b);in.close();out.close();catch(IOException e)System.out.println(error+e);4现在有如下格式的学生成绩单(文

6、本格式)score.txt:姓名:张三,数学72分,物理67分,英语70分.姓名:李四,数学92分,物理98分,英语88分.姓名:周五,数学68分,物理80分,英语77分.要求按行读入成绩单,并在该行的后面加上该运动员的总成绩,然后再将该行写入到一个名字为socreAnalysis.txt的文件中。请按如下的程序模板中的要求,将【代码】替换为Java程序代码,以完成该程序。Fenxi.java文件清单:import java.util.*;public class Fenxi public static int getTotalScore(String s) String regex=0123

7、456789 ; /匹配非数字的正则表达式 String digitMess=s.replaceAll(regex,*); StringTokenizer fenxi = new StringTokenizer(digitMess,*); int totalScore=0; while(fenxi.hasMoreTokens() int score = Integer.parseInt(fenxi.nextToken(); totalScore = totalScore+score; return totalScore; AnalysisResult.java文件清单:import java.

8、io.*;import java.util.*;public class AnalysisResult public static void main(String args) File fRead = new File(score.txt); File fWrite = new File(socreAnalysis.txt); try Writer out = 【代码1】/创建指向文件fWrite的文件输出流对象out BufferedWriter bufferWrite = 【代码2】/创建指向out的bufferWrite流 Reader in = 【代码3】/创建指向文件fRead的文

9、件输入流对象in BufferedReader bufferRead =【代码4】/创建指向in的缓冲流 String str = null; while(str=bufferRead.readLine()!=null) int totalScore=Fenxi.getTotalScore(str); str = str+总成绩:+totalScore; System.out.println(str); bufferWrite.write(str); bufferWrite.newLine(); bufferRead.close(); bufferWrite.close(); catch(IO

10、Exception e) System.out.println(e.toString(); class AnalysisResult public static void main(String args) File fRead = new File(D:jdk1.8.0_20新建文件夹zzjsrczzjscore.txt); File fWrite = new File(D:jdk1.8.0_20新建文件夹zzjsrczzjsocreAnalysis.txt); try Writer out =new FileWriter(fWrite); BufferedWriter bufferWrit

11、e =new BufferedWriter(out); Reader in =new FileReader(fRead); BufferedReader bufferRead =new BufferedReader(in); String str = null; while(str=bufferRead.readLine()!=null) int totalScore=Fenxi.getTotalScore(str); str = str+总成绩:+totalScore; System.out.println(str); bufferWrite.write(str); bufferWrite.

12、newLine(); bufferRead.close(); bufferWrite.close(); catch(IOException e) System.out.println(e.toString(); 5编写一个程序,利用缓冲流实现接收键盘输入的数据,并写入到指定文件中(如当前目录下的tt.txt文件)的功能,要求键盘输入”exit”时结束。(提示:)import java.io.*;import java.util.Scanner;public class sy5 public static void main(String args) Scanner sc=new Scanner

13、(System.in);String s = sc.next();tryFileWriter out=new FileWriter(D:jdk1.8.0_20新建文件夹zzjsrczzjtt.txt);while(s=exit)BufferedWriter br=new BufferedWriter(out);br.write(s);s=sc.next();catch(IOException e)System.out.println(error+e);6下面的程序使用随机流进行文件的保存和读取,请按如下的程序模板中的要求,将【代码】替换为Java程序代码,以完成该程序,使得程序在控制台的输出结

14、果如下:程序清单:import java.io.*;public class testRandom2 public static void main(String args) try RandomAccessFile rf = new RandomAccessFile(rtest.dat, rw);for (int i = 0; i 10; i+) rf.writeInt(i);rf.writeDouble(i * 1.414);rf.close();rf = new RandomAccessFile(rtest.dat, rw);rf.seek (【代码1】);rf.writeInt(47)

15、;rf.writeDouble(47.00021);rf.close();rf = new RandomAccessFile(rtest.dat, r);for (int i = 0; i 10; i+) ;System.out.println(Value + rf.readInt() + : +【代码2】);rf.【代码3】; catch (IOException e) System.out.println(e.toString();import java.io.*;public class testRandom2 public static void main(String args) t

16、ry RandomAccessFile rf = new RandomAccessFile(rtest.dat, rw);for (int i = 0; i 10; i+) rf.writeInt(i);rf.writeDouble(i * 1.414);rf.close();rf = new RandomAccessFile(rtest.dat, rw);rf.seek (0);rf.writeInt(47);rf.writeDouble(47.00021);rf.close();rf = new RandomAccessFile(rtest.dat, r);for (int i = 0;

17、i 10; i+) ;System.out.println(Value + rf.readInt() + : +rf.readDouble();rf.close(); catch (IOException e) System.out.println(e.toString();7. 下面的程序使用对象的序列化及对象流进行对象的保存和读取,请按如下的程序模板中的要求,将【代码】替换为Java程序代码,以完成该程序。程序清单:import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOExceptio

18、n;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.Serializable;public class SerializableDemo public static void main(String args) throws Exception student stu = new student(20131064, 张三, 20, 西华大学);FileOutputStream fout = new FileOutputStream(data1.ser);ObjectOutputS

19、tream oout = new 【代码1】;/ 输出对象oout.writeObject(stu);oout.close();stu = null;FileInputStream fin = new 【代码2】;ObjectInputStream oin = new 【代码3】;/ 读入对象stu = 【代码4】;oin.close();System.out.println(学生信息:);System.out.println(ID: + stu.id);System.out.println(name: + stu.name);System.out.println(age: + stu.age

20、);System.out.println(department: + stu.department);class student implements Serializable int id;String name;int age;String department;public student(int id, String name, int age, String department) this.id = id;this.name = name;this.age = age;this.department = department;import java.io.FileInputStre

21、am;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.Serializable;public class SerializableDemo private static student stu;public static void main(String args) throws Exception stu = new student(20131064, 张三,

22、20, 西华大学);FileOutputStream fout = new FileOutputStream(data1.ser);ObjectOutputStream oout = new ObjectOutputStream(fout);oout.writeObject(stu);oout.close();stu = null;FileInputStream fin = new FileInputStream(data1.ser);ObjectInputStream oin = new ObjectInputStream(fin);stu =new student(20131064, 张三

23、, 20, 西华大学);oin.close();System.out.println(学生信息:); System.out.println(ID: +stu.id);System.out.println(name: + stu.name);System.out.println(age: + stu.age);System.out.println(department: + stu.department);class student implements Serializable int id;String name;int age;String department;public studen

24、t(int id, String name, int age, String department) this.id = id;this.name = name;this.age = age;this.department = department;8. 下面的程序以字节为单位进行文件的读写操作,请阅读并分析该程序,上机运行查看效果,然后修改程序,使其以字符流方式进行文件的读写操作。程序清单:import java.io.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class readerbyt

25、e extends JFrame implements ActionListener JButton b1, b2, b3;JTextField jt1;JTextArea jt2;readerbyte() setTitle(FileInputStream-FileOutputStream演示);getContentPane().setLayout(new FlowLayout();this.setDefaultLookAndFeelDecorated(true);this.setSize(450, 350);b1 = new JButton(写入);b2 = new JButton(读取);

26、b3 = new JButton(退出);b1.addActionListener(this);b2.addActionListener(this);b3.addActionListener(this);jt1 = new JTextField(10);jt2 = new JTextArea(10, 30);jt2.setLineWrap(true);jt2.setWrapStyleWord(true);JScrollPane jspa = new JScrollPane(jt2);JPanel p1 = new JPanel();p1.add(new JLabel(请输入文件名:);p1.a

27、dd(jt1);JPanel p2 = new JPanel();p2.add(new JLabel(文件内容:);p2.add(jspa);JPanel p3 = new JPanel();p3.add(b1);p3.add(b2);p3.add(b3);getContentPane().add(p1);getContentPane().add(p2);getContentPane().add(p3);setVisible(true);public void actionPerformed(ActionEvent ee) if (ee.getSource() = b3) dispose();

28、System.exit(0);if (ee.getSource() = b1)writer();if (ee.getSource() = b2)reader();void writer() String s1, s2;s1 = jt1.getText().trim();if (s1.equals() JOptionPane.showMessageDialog(null, 没有输入文件名);jt1.requestFocus(); else s2 = jt2.getText().trim();char s22 = s2.toCharArray();try FileOutputStream file

29、 = new FileOutputStream(s1);for (int i = 0; i s22.length; i+)file.write(s22i);file.close(); catch (IOException ie) jt1.setText();jt2.setText();void reader() String s1, s2 = ;s1 = jt1.getText().trim();if (s1.equals() JOptionPane.showMessageDialog(null, 没有输入文件名);jt1.requestFocus(); elsetry FileInputSt

30、ream file = new FileInputStream(s1);int c;while (c = file.read() != -1)s2 = s2 + (char) c;jt2.setText(s2);file.close(); catch (IOException ie) jt1.setText();public static void main(String args) new readerbyte();import java.io.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;public cl

31、ass readerbyte extends JFrame implements ActionListener JButton b1, b2, b3;JTextField jt1;JTextArea jt2;readerbyte() setTitle(FileInputStream-FileOutputStream演示);getContentPane().setLayout(new FlowLayout();this.setDefaultLookAndFeelDecorated(true);this.setSize(450, 350);b1 = new JButton(写入);b2 = new

32、 JButton(读取);b3 = new JButton(退出);b1.addActionListener(this);b2.addActionListener(this);b3.addActionListener(this);jt1 = new JTextField(10);jt2 = new JTextArea(10, 30);jt2.setLineWrap(true);jt2.setWrapStyleWord(true);JScrollPane jspa = new JScrollPane(jt2);JPanel p1 = new JPanel();p1.add(new JLabel(

33、请输入文件名:);p1.add(jt1);JPanel p2 = new JPanel();p2.add(new JLabel(文件内容:);p2.add(jspa);JPanel p3 = new JPanel();p3.add(b1);p3.add(b2);p3.add(b3);getContentPane().add(p1);getContentPane().add(p2);getContentPane().add(p3);setVisible(true);public void actionPerformed(ActionEvent ee) if (ee.getSource() = b

34、3) dispose();System.exit(0);if (ee.getSource() = b1)writer();if (ee.getSource() = b2)reader();void writer() String s1, s2;s1 = jt1.getText().trim();if (s1.equals() JOptionPane.showMessageDialog(null, 没有输入文件名);jt1.requestFocus(); else s2 = jt2.getText().trim();char s22 = s2.toCharArray();try FileWrit

35、er file = new FileWriter(s1);for (int i = 0; i s22.length; i+)file.write(s22i);file.close(); catch (IOException ie) jt1.setText();jt2.setText();void reader() String s1, s2 = ;s1 = jt1.getText().trim();if (s1.equals() JOptionPane.showMessageDialog(null, 没有输入文件名);jt1.requestFocus(); elsetry FileReader file = new FileReader(s1);int c;while (c = file.read() != -1)s2 = s2 + (char) c;jt2.setText(s2);file.close(); catch (IOException ie) jt1.setText();public static void main(String args) new readerbyte();

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1