形式系统

计算机专业教学
posts - 48, comments - 150, trackbacks - 0, articles - 10
  教师博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

Java实验四

Posted on 2006-10-27 14:23 形式系统 阅读(510) 评论(1)  编辑 收藏 引用 网摘 所属分类: 编程开发

实验四 I/O流处理

 

[实验目的]

1、熟悉流的包装体系

2、掌握使用文件流、缓冲流、对象流。

3、理解和运用串行化机制

[实验内容]

1、 必作) 通过命令行方式传入源文件、目标文件,实现文件的拷贝。

2 、(必作) 分别就以下两种情况测量缓冲式和非缓冲式 I/O 操作的性能差别(两者组合共四种方式)。第一种情况是每次写一个字节,重复写 100000 次;第二种情况是一次输出 10 字节。两种情况均循环执行 100000 次(可参考后面代码)。

3 、(必作) 将实验三中的 Score 类串行化,即声明 Serializable 接口,编写主程序将其写入磁盘文件和从磁盘文件中读出。

4 、(选作) 编写配置文件(即通常的 INI 文件)读写器。构造 IniFileAgent 类,将文件的内容映射成对象以便上层程序更方便地使用。具体类结构见所附代码。

配置文件的一般格式为:

[ 节名 ]

项名 = 项值

如:以下为 System.ini 的内容:

[386enh]

woafont=app936.FON

EGA80WOA.FON=EGA80WOA.FON

       提示:本题需要解决的关键问题是识别节与节的边界。每节的项数目是不定的,节与项目之间,项与项之间必须回车。但节与节之间可空行也可不空行。显然回车、空格均不能构成节之间的分界。若采用超前搜索,则涉及到回退。而通常流针对的是顺序文件。因此可采用两种思路解决:( 1 )采用随机文件访问。( 2 )同样采用输入流方式,一次读一行,判别是项、节还是空行,再分别作适当处理。通过一次扫描,全部构造所有的 Section

要求:

1 )选作内容不要求写实验报告,供学有余力的同学作为课外学习参考。经适当扩充,可作为课程设计,部分课题扩充后也可作为毕业设计, 也可发至邮箱 hong_yao@126.com 可获得实验加分,只需完成一个选作项目即可,但若发现雷同,相关人员均不得加分。

2 )实验报告上要求 1 3 题写代码, 2 题只写实验结果,即 4 种方式的毫秒数。

 

附参考代码:

2 题:

public static void main(String args[])

    {

       long usedTime;

       try {

           // 通过对话框输入命令决定以哪种方式运行

           String cmd=JOptionPane.showInputDialog(null);

           if(cmd.equals("M1")){   // 方式 1 :无缓冲一次一字节写

               FileOutputStream fs=new FileOutputStream("D:\\a.txt");

               Date d1=new Date();   

               for(int i=0;i<100000;i++)

                   fs.write('a');

               Date d2=new Date();

               usedTime=d2.getTime()-d1.getTime();

               System.out.println(" 所用时间: "+usedTime+" 毫秒 ");

               fs.close();

           }elseif(cmd.equals("M2")){  // 方式 2 :有缓冲一次一字节写

               …// 后续代码可仿照上面写出。

4  题:

public class IniFileAgent {

    String fileName;

    public ArrayList<Section> sections;

    ObjectInputStream in;    // 若改用随机文件的方式则不要 in out 两个变量

    ObjectOutputStream out;

    // 在定义对象的同时立即载入

    public IniFileAgent(String fileName) throws IOException{…}

    //charSet 参数为支持的字符集 , 以备将来扩充

    public IniFileAgent(String fileName,String charSet){…}

    // 从该文件载入并转换成 sections 对象数组

    public void load() throws IOException {…}

    // sections 对象数组保存

    public void save() throws IOException {…}

    // 获取 Sections 供外部程序使用

    public ArrayList<Section> getSections(){

        return sections;

    }}

public class Section implements Serializable {

    public TreeMap<String,String> items=new TreeMap();//

    public String getValue(String itemName){

        return items.get(itemName);

    }

    public void addItem(String key,String value){

        items.put(key, value);

    }

    public void removeItem(String key){

        items.remove(key);

    }

    public int size(){

        return items.size();

    }

}

 

Feedback

# re: Java实验四  回复  更多评论   

2006-10-27 21:30 by 学生
老师给个模版吧

只有注册用户登录后才能发表评论。