Java面向对象实验 7 ——Java高级I/O流程序设计

一、实验目的

 1、了解流、输入/输出流的概念。

  2、掌握常见的输入/输出流类及其主要方法。

  3、掌握用I/O流实现文件读/写的方法。

二、实验内容

1.编写程序将从键盘上输入的一行内容写入到文件copyfile.txt中,文件的保存位置自己确定。

package OOP.work.Test7;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Scanner;

/*编写程序将从键盘上输入的一行内容写入到文件copyfile.txt中,文件的保存位置自己确定*/
public class T1 {
    public static void main(String[] args) {
        Scanner scanner =new Scanner(System.in);
        String s=scanner.nextLine();
        try{
            FileOutputStream fin=new FileOutputStream("D:\\ALL-ma\\KeDa\\JAVA\\src\\OOP\\work\\Test7\\copyfile.txt");//该路径 放在自己能找大的位置
            fin.write(s.getBytes(StandardCharsets.UTF_8));
            fin.close();
        }catch (FileNotFoundException e){
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 

2. 选择一个含有中文注释的.java文件,使用FileInputStream和FileReader分别读取文件,并把内容显示在控制台上。然后使用FileOutputStream和FileWriter将文件分别将文件复制到另一个文件copyfile1.txt和 copyfile2.txt中,文件的保存位置自己确定。

package OOP.work.Test7;

import java.io.*;

/*
 选择一个含有中文注释的.java文件,
 使用FileInputStream和FileReader分别读取文件,
 并把内容显示在控制台上。
 然后使用FileOutputStream和FileWriter
 分别将文件复制到另一个文件copyfile1.txt和 copyfile2.txt中,
 文件的保存位置自己确定。
 */
public class T2 {
    public static void main(String[] args) {
        int ch,rh;
        System.out.println("FileInputStream 读取文件");
        //FileInputStream 读取java文件
        try{
            FileInputStream fis=new FileInputStream("D:\\ALL-ma\\KeDa\\JAVA\\src\\OOP\\Self\\Z12_InputOutput\\RandomFile.java");
            FileOutputStream fos=new FileOutputStream("D:\\ALL-ma\\KeDa\\JAVA\\src\\OOP\\work\\Test7\\copyfile1.txt");
            while ((ch=fis.read())!=-1)//当n不等于-1,则代表未到末尾
                fos.write(ch);
            System.out.println(fos);
            fis.close();
        }catch (FileNotFoundException e){
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        System.out.println("-----------------------------------------------------------------------------------------------");

        System.out.println("FileReader 读取文件");
        //FileReader 读取文件
        try{
            FileReader fr=new FileReader("D:\\ALL-ma\\KeDa\\JAVA\\src\\OOP\\Self\\Z12_InputOutput\\RandomFile.java");
            FileWriter fw=new FileWriter("D:\\ALL-ma\\KeDa\\JAVA\\src\\OOP\\work\\Test7\\copyfile2.txt");
            while ((rh=fr.read())!=-1)//当n不等于-1,则代表未到末尾
                fw.write(rh);
            fw.flush();//!!!!记得刷新一下,不然copyfile2文本,会得不到这些文字
            System.out.println(fw);
            fr.close();
        }catch (FileNotFoundException e){
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

3.利用上机6中第3题 的Book类,创建10个相应的对象,写入到文件book2.dat中;再从文件book2.dat中读出copy到文件book3.dat中。

package OOP.work.Test7;

import OOP.work.Test6.T2.Book;

import java.io.*;
import java.util.ArrayList;
import java.util.List;

/*
利用上机6中第3题 的Book类,
创建10个相应的对象,写入到文件book2.dat中;
再从文件book2.dat中读出copy到文件book3.dat中
 */
public class T3 {
    public static void main(String[] args)  throws  IOException {

        Book book1=new Book("01","java","一一");
        Book book2=new Book("02","java1","一1一");
        Book book3=new Book("03","java2","一22一");
        Book book4=new Book("04","java3","一3一");
        Book book5=new Book("05","java4","一4一");
        Book book6=new Book("06","java5","一5一");
        Book book7=new Book("07","java6","一6一");
        Book book8=new Book("08","java7","一7一");
        Book book9=new Book("09","java8","一88一");
        Book book10=new Book("10","jav9a","一9一");


        try{
            FileOutputStream fout=new FileOutputStream("D:\\ALL-ma\\KeDa\\JAVA\\src\\OOP\\work\\Test7\\BOOK2.dat");
            FileInputStream fin=new FileInputStream("D:\\ALL-ma\\KeDa\\JAVA\\src\\OOP\\work\\Test7\\BOOK2.dat");
            ObjectOutputStream oout=new ObjectOutputStream(fout);
            oout.writeObject(book1);
            oout.writeObject(book2);
            oout.writeObject(book3);
            oout.writeObject(book4);
            oout.writeObject(book5);
            oout.writeObject(book6);
            oout.writeObject(book7);
            oout.writeObject(book8);
            oout.writeObject(book9);
            oout.writeObject(book10);
            ObjectInputStream oin=new ObjectInputStream(fin);
            FileOutputStream fout1=new FileOutputStream("D:\\ALL-ma\\KeDa\\JAVA\\src\\OOP\\work\\Test7\\BOOK3.dat");
            ObjectOutputStream oout1=new ObjectOutputStream(fout1);
            while (fin.available()>0){
                book1 =(Book)oin.readObject();
                System.out.println(book1.toString());
                oout1.writeObject(book1);
            }
            oout.close();
            oin.close();
            oout1.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }catch (IOException eo){
            eo.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }


    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值