当前位置: 首页 > news >正文

#Java第九次作业--输入输出流和文件操作

Java第九次作业--输入输出流和文件操作

(一)学习总结

1.用思维导图对javaIO操作的学习内容进行总结。

U7McbiFXJ

2.下面的程序实现了文件的拷贝,但采用的是一个字节一个字节的读写方式,效率很低。使用缓冲区可以减少对文件的操作次数,从而提高读写数据的效率。IO包中提供了两个带缓冲的字节流BufferedInputStream和BufferedOutputStream,查阅JDK帮助文档,修改程序,利用这两个类完成文件拷贝,对比执行效率。

import java.io.*;
public class Test{
public static void main(String args[]) {
    FileInputStream in=null;
    FileOutputStream out=null;
    File fSource=new File("d:"+File.separator+"my.jpg");
    File fDest=new File("d:"+File.separator+"java"+File.separator+"my.jpg");
    if(!fSource.exists()){ 
        System.out.println("源文件不存在");   
        System.exit(1);   
    }
    if(!fDest.getParentFile().exists()){   
        fDest.getParentFile().mkdirs();     
    }
    try {   
        in=new FileInputStream(fSource);
        out=new FileOutputStream(fDest);
        int len=0;
        long begintime = System.currentTimeMillis();
        while((len=in.read())!=-1){
            out.write(len);          
        } 
        long endtime = System.currentTimeMillis();
        System.out.println("文件拷贝完成,耗时"
                        +(endtime-begintime)+"毫秒");
    }catch(Exception e){
        System.out.println("文件操作失败");  
    }finally{       
        try {   
            in.close();   
            out.close();
        } catch (IOException e) {
            e.printStackTrace();
        }      
    }     
}
}
  • public BufferedInputStream(InputStream in)创建一个 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。创建一个内部缓冲区数组并将其存储在 buf 中。

  • public BufferedOutputStream(OutputStream out)创建一个新的缓冲输出流,以将数据写入指定的底层输出流。

    修改后程序:

    import java.io.*;
    public class Test{
    public static void main(String args[]) throws FileNotFoundException {
    FileInputStream in=null;
    FileOutputStream out=null;
    File fSource=new File("d:"+File.separator+"my.jpg");
    File fDest=new File("d:"+File.separator+"java"+File.separator+"my.jpg");
    if(!fSource.exists()){
    System.out.println("源文件不存在");
    System.exit(1);
    }
    if(!fDest.getParentFile().exists()){
    fDest.getParentFile().mkdirs();
    }
    //BufferedInputStream和BufferedOutputStream
    byte[] buf = new byte[1];
    BufferedInputStream b1 = new BufferedInputStream(new FileInputStream("d:"+File.separator+"my.jpg"));
    BufferedOutputStream b2 = new BufferedOutputStream(new FileOutputStream("d:"+File.separator+"java"+File.separator+"my.jpg"));
    try {
    long begintime = System.currentTimeMillis();
    while(b1.read(buf)!=-1){
    b2.write(buf);
    }
    b2.flush();
    b1.close();
    b2.close();
    long endtime = System.currentTimeMillis();
    System.out.println("文件拷贝完成,耗时"
    +(endtime-begintime)+"毫秒");
    }catch(Exception e){
    System.out.println("文件操作失败");
    }
    }
    }
    BfW1igfqZ
    c9SEZ3O33

    (二)实验总结

  • 实验内容:

  • 1.宠物商店:在实验八的基础上,增加一个功能,用文件保存每日的交易信息记录。

  • 2.完成文件复制操作,在程序运行后,提示输入源文件路径和目标文件路径。

  • 程序设计思路:

1.建立Pets库进行统计宠物的增加,删除,修改以及购买等操作

2.建立Users库进行用户信息的统计和存储

3.未注册的用户会提示要进行注册才能进行购买,登录信息与注册信息一直进入购买界面

4.购买对宠物信息数据进行了更改,记录在文件中
WtdJXUjNI

(三)代码托管

作业链接

iDUPeCma2

转载于:https://www.cnblogs.com/renxiuxing/p/6905655.html

相关文章:

  • 路径层、裁剪区域
  • to_char函数 官方文档详解(数字格式转换和日期转换)
  • 【代码笔记】iOS-NSJSONSerializationDemo
  • java做http接口
  • Android异步载入全解析之开篇瞎扯淡
  • python版本与编码的区别
  • hdu5304 Eastest Magical Day Seep Group#39;s Summer 状压dp+生成树
  • Visual Studio - 引入动态库
  • iOS private-api-checker私有API检测
  • JAVA常见算法题(十二)
  • 指针知识梳理10-指向数组的指针
  • Python入门基础:代码的编码风格
  • 中科院分词系统(NLPIR)JAVA简易教程
  • 62.Unique Paths
  • HttpClient调用api
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • 10个最佳ES6特性 ES7与ES8的特性
  • C# 免费离线人脸识别 2.0 Demo
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • Github访问慢解决办法
  • React-redux的原理以及使用
  • socket.io+express实现聊天室的思考(三)
  • web标准化(下)
  • 蓝海存储开关机注意事项总结
  • 利用DataURL技术在网页上显示图片
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 算法-图和图算法
  • 微服务入门【系列视频课程】
  • 微信小程序--------语音识别(前端自己也能玩)
  • 线性表及其算法(java实现)
  • 在Docker Swarm上部署Apache Storm:第1部分
  • Spring第一个helloWorld
  • 数据库巡检项
  • 说说我为什么看好Spring Cloud Alibaba
  • #100天计划# 2013年9月29日
  • (1)SpringCloud 整合Python
  • (9)STL算法之逆转旋转
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (翻译)terry crowley: 写给程序员
  • (分布式缓存)Redis持久化
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • .Net Core和.Net Standard直观理解
  • .net redis定时_一场由fork引发的超时,让我们重新探讨了Redis的抖动问题
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .net 验证控件和javaScript的冲突问题
  • .NET/C# 检测电脑上安装的 .NET Framework 的版本
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)
  • .NET多线程执行函数
  • .net中我喜欢的两种验证码
  • @EventListener注解使用说明
  • @RequestBody与@ModelAttribute
  • [ 第一章] JavaScript 简史
  • []使用 Tortoise SVN 创建 Externals 外部引用目录
  • [Android]Android P(9) WIFI学习笔记 - 扫描 (1)