当前位置: 首页 > 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
  • angular2开源库收集
  • CentOS7简单部署NFS
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • React系列之 Redux 架构模式
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • windows下如何用phpstorm同步测试服务器
  • 记一次和乔布斯合作最难忘的经历
  • 聊聊redis的数据结构的应用
  • 你不可错过的前端面试题(一)
  •  一套莫尔斯电报听写、翻译系统
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • # 计算机视觉入门
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (LeetCode) T14. Longest Common Prefix
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (zhuan) 一些RL的文献(及笔记)
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (转)C#调用WebService 基础
  • . NET自动找可写目录
  • ./configure,make,make install的作用(转)
  • .cfg\.dat\.mak(持续补充)
  • .NET 反射 Reflect
  • .net 无限分类
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...
  • .NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试
  • .NET框架类在ASP.NET中的使用(2) ——QA
  • @GetMapping和@RequestMapping的区别
  • @GlobalLock注解作用与原理解析
  • [ACM] hdu 1201 18岁生日
  • [Android]使用Git将项目提交到GitHub
  • [C语言]——内存函数
  • [EFI]Dell Latitude-7400电脑 Hackintosh 黑苹果efi引导文件
  • [iHooya]2023年1月30日作业解析
  • [LaTex]arXiv投稿攻略——jpg/png转pdf
  • [linux] Key is stored in legacy trusted.gpg keyring