Fork me on GitHub

日报:开发二组,部分第二周作业总结

完成1、完成Hello world程序  2、将c盘里的文件复制到D盘的文件中 3、实现一个多线程 4、实现一个自定义异常

1   新建一个类,写主方法,直接System.out.println("hello world");

2、对于Java中的IO流,主要分为字节流和字符流,这是对于文件内容的分类,当然还有对象流。

  除了文件内容的区分,还有对传输方式的区分,这里就有了文件传输、缓冲数据流、对象流以及序列化的传输方式;

  再到后面的妙用就不多说了

  针对任务,我写了字节缓冲流读写复制文件:

 

 用BufferInputStreamBufferOutputStream这个方法传入两个需要路径的参数,bufferedInputStream对文件进行字节读取,读取出来的字节再通过bufferedOutputStream写入到路径的文件中,这里没啥好说的,有趣的就是其中out在使用中是往里面的感觉,

而in则是往外的感觉,这个需要区分

 

 通过主方法输入参数(相关路径)输入输出路径,调用BufferInputStreamBufferOutputStream方法实现。

这任务的重点是从c盘(系统盘)里读取文件,在正常的情况下,在c盘里新建文档都会被受限制,所以Java的IO流未必能读取到数据,

在我运行这个代码的时候,就遇见“权限不足”的情况。解决问题的方法也很简单,重启Ecplise以管理员的身份打开,再运行这行代码就好使了!

这个权限问题以后值得再研究研究。

3、实现一个多线程 :

实现多线程有很多的方式,因为实现线程就有很多方式,实现多线程就没什么难的,个人觉着实现多线程协调操作才是多线程的重点,那么就涉及到了

线程安全的问题,那这里只要求实现多线程而已

 

 这个是之间我学习JUC时候的代码,这里的多线程是用的是Lambda的表达式,就是一个匿名内部类的简化表示,就实现了多线程。当然了,实例化

Thread、Runable等等再实现也是可以的。而countDownLatch则是一种线程控制方法:确保每个线程都跑完,最后执行之后的代码。

 4、实现一个自定义异常:

自定义异常的作用就是表达程序出错后,更容易的理解出错的原因,因为大多数的情况下,出现错误的代码人一时认不出来

 

 那么你就得自定义异常,用自己的语言表达这个异常是什么问题,我这里就继承了Exception,对里面得IllegalAgeException的异常

进行自定义

 

 实现的结果:

 

 这样的话,程序以后出的错,就更容易知道是什么错误,否则就很难知道了,这也是对该段程序出现的自定义异常也是根据实际程序情况定义的,只是为了

以后更好的处理这种异常。

posted @ 2021-07-22 19:57  爱哭的派大星  阅读(45)  评论(0编辑  收藏  举报