加载中...

《Java程序设计》实验十-输入输出流


前言

记录一下做过的题目,虽然作为入门题目很简单,不过还是可以学到东西的hh。

程序设计一 上机实践

题目:

完成上机实践10.13的上机实践内容,请给每一条语句加上注释

AnalysisResult类

package org.实验十.上机实践;

import java.io.*;

public class AnalysisResult {
    public static void main(String args[]) {
        File fRead = new File("D:/score.txt"); //创建文件对象,读对象
        File fWrite = new File("socreAnalysis.txt");  //写的文件对象
        try{
            Writer out = new FileWriter(fWrite,true); //以尾加方式创建指向文件fWrite的out流
            BufferedWriter bufferWrite = new BufferedWriter(out); //创建指向out的bufferWrite流
            Reader in = new FileReader(fRead); //创建指向文件的fRead的in流
            BufferedReader bufferRead = new BufferedReader(in); //创建指向in的bufferRead流
            String str = null;
            while((str=bufferRead.readLine())!=null) {  //如果还有数据可以读,进入循环
                double totalScore= Fenxi.getTotalScore(str);  //调用Fenxi类的方法求得学生总分
                str = str+" 总分:"+totalScore;
                System.out.println(str);   //在本地编译器输出
                bufferWrite.write(str);   //写出去
                bufferWrite.newLine();    //插入一个换行符
            }
            bufferRead.close();  //关闭bufferRead流
            bufferWrite.close();  //关闭bufferWrite流
        }
        catch(IOException e) {
            System.out.println(e.toString());
        }
    }
}

Fenxi类

package org.实验十.上机实践;

import java.util.InputMismatchException;
import java.util.Scanner;

public class Fenxi {
    public static double getTotalScore(String s) {  //得到总分
        Scanner scanner = new Scanner(s);
        scanner.useDelimiter("[^0123456789.]+");  //Scanner对象可以调用useDelimiter方法,将一个正则表达式作为分隔标记
                                                          //和正则表达式匹配的字符都是分割标记
                                                         //正则表达式,是一个含有特殊意义的字符串
        double totalScore=0;
        while(scanner.hasNext()){ //如果还有数据要读,进入循环
            try{
                double score = scanner.nextDouble();
                totalScore = totalScore+score;
            }
            catch(InputMismatchException exp){ //如果有异常,执行下面的内容
                String t = scanner.next();  //scanner此时读的是s中的内容
            }
        }
        return totalScore;
    }
}

程序设计二 列出文件名称

题目:

请完成程序设计:列出当前文件夹下全部单位文件名称:

文件存储目录为:“C:\ch10”;

文件扩展名为:“.txt”。

ch10文件夹目录如下:

image.png

RFname类

package org.实验十;
import java.io.File;

public class RFname {
    //如果文件夹下嵌套文件夹,就用递归的方式输出
    private static void showList(File file) {
        if (file.isDirectory()) {//如果是目录
            System.out.println("文件夹:" + file.getName());
            File[] listFiles = file.listFiles();//获取当前路径下的所有文件和目录,返回File对象数组
            for (File f : listFiles) {//将目录内的内容对象化并遍历
                showList(f);
            }
        } else if (file.isFile()) {//如果是文件
            System.out.println("文件:" + file.getName());
        }
    }

    public static void main(String[] args) {
        File file = new File("D:/ch10");
        showList(file);
    }
}

tips

  • 请提前在指定目下新建文件,并将学生分数填入。

  • sorce.txt 文件内容如下:

    姓名:张三,数学72分,物理67分,英语70分.
    姓名:李四,数学92分,物理67分,英语70分.
    姓名:周五,数学68分,物理67分,英语70分.

程序设计三

题目:

请完成程序设计:模拟完成物资供给单位信息,前端及服务端的信息交互过程:

(1)创建一个信息存储类,属性为:“单位性质”,“单位名称”、“联系电话”、“单位地址”;

(2)创建单位信息对象“山东工商学院”;

(3)将山东工商学院单位信息存储于本地“C:\ch10\山东工商学院单位信息.txt”文件中;

(4)读取“C:\ch10\山东工商学院单位信息.txt”文件,分别显示山东工商学院单位全部信息内容。

xinxijiaohu类

package org.实验十.信息存储;

import org.实验十.信息存储.Unit_Info;

import java.io.*;

public class xinxijaohu {
    public static void main(String[] args){
        Unit_Info Sdtbu = new Unit_Info("山东工商学院","事业单位","0535-123456","山东省烟台市莱山区滨海路");
        try{
            File file=new File("D:/ch10/山东工商学院单位信息.txt");
            FileOutputStream fileout=new FileOutputStream(file);
            ObjectOutputStream objectout=new ObjectOutputStream(fileout);

            objectout.writeObject(Sdtbu);
            objectout.close();
        }
        catch(IOException event){
            System.out.println(event);
        }

        try{
            FileInputStream filein=new FileInputStream("D:/ch10/山东工商学院单位信息.txt");
            ObjectInputStream objectin=new ObjectInputStream(filein);

            Unit_Info show_Sdtbu=(Unit_Info) objectin.readObject();
            objectin.close();

            System.out.println("单位信息:"+show_Sdtbu.nameString);
            System.out.println("单位属性:"+show_Sdtbu.proString);
            System.out.println("单位电话:"+show_Sdtbu.phone_num);
            System.out.println("单位地址:"+show_Sdtbu.addString);
        }
        catch(ClassNotFoundException event){ // 异常对应objectin.readObject()
            System.out.println("无法读出对象");
        }
        catch(IOException event){
            System.out.println(event);
        }
    }
}

信息存储类

package org.实验十.信息存储;

import java.io.Serializable;

public class Unit_Info implements Serializable {//注意,要实现这个借口
    public String nameString,proString,phone_num,addString;
    Unit_Info(String n,String ps,String pn,String a){
        nameString=n;
        proString=ps;
        phone_num=pn;
        addString=a;
    }
}

tips

  • 信息存储类要实现 Serializable 接口,否则无法正常写入文件数据。

文章作者: 心意
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 心意 !
评论
  目录