Io流小总结

IO流的总结

 一 .io流的概念

通过数据流、序列化和文件系统提供系统输入和输出。

  2.    I =>   Input 输出---将数据源读到内存中;

       O =>  Output 输出---将内存数据写到硬盘中。

 

数据流

“流”就像一根管道,数据在管道中的走向就叫数据流。

作用  用来处理设备之间的数据传输。

电脑中文件的展示形式: 文件和文件夹

            操作方式: 读和写

  • IO流的体系

字节流:字节流是用来处理二进制(0、1)数据,它是按字节来处理的。

 

 流

     |        |--InputStream(输入流)

     |        |     |--FileInputStream --文件输入流   这些类的作用是什么?什么时候用?

     |        |     |--BufferedInputStream --缓冲输入流

     |--字节流|     |--ObjectInputStream --对象输入流

     |        |     |--DataInputStream --数据输入流

     |        |     |--ByteArrayInputStream --内存输入流

     |        |--OutputStream(输出流)

     |              |--FileOutputStream --文件输出流

     |              |--BufferedOutputStream --缓冲输出流

     |              |--ObjectOutputStream --对象输出流

     |              |--DataOutputStream --数据输出流

     |              |--ByteArrayOutputStream --内存输出流

     |              |--PrintOutputStream --打印输出流

     |

     |--字符流|--Reader(输入流)

              |     |--FileReader --文件输入流

              |     |--BufferedReader --缓冲输入流

              |--Writer(输出流)

                   |--FileWriter --文件输出流                   |--BufferedWriter --缓冲输出流

 

InputStreamReader --字节转字符输入流

OutputStreamWriter类 --字节转字符输出流

 

字符流

总结:

    所有以Stream结尾的都是字节流

    所有以Reader或者Writer结尾的都是字符流

IO流就这么简单:

第1:明确用哪种流?字节流?字符流?

 

第2:输入还是输出?站的角度

第3:明确操作的介质

硬盘----File类  FileinputStream   FileOutputStream

控制台--System.in   System.out

数组----ByteArrayInputStream  ByteArrayOutputStream

网络----Socket

序列化和反序列化 ObjectInputStream ObjectOutputStream

第4:是否需要提高效率?是否需要转换?

第5:方法

字节输入流 FileInputStream read()

字节输出流 FileOutputStream writer()

字符输入流 Reader read() readLine()

字符输出流 Writer writer()

序列化 writerObject()     readObject()

 

//模拟scanner

//通过流的方式

// InputStream is = System.in;

// byte[] by= new byte[1024];

// System.out.println("请输入:");

// int n = is.read(by);   //scanner的接收代码  .next()

// String str =new String(by,0,n);

// System.out.println("你输入字符串是:"+str);

 

三、URL 类

Url :统一资源定位符,它是互联网“资源”的指针。 127.0.0.1 localhost

URL   url=new URL(“  网址    ”);

Url.getHost();  获得对象的主机名

Url.getDefaultPort();   获得对象的默认端口号

Url.getPath();   获得路径部分

Url.getPort   获得端口号

Url.getFile  获得文件名

Url.openStream  打开到此URL的连接,并返回一个用于从该连接读入的 InputStream。

 

下载

利用URL类进行网上下载资源,比如文字、图片、视频。

  字节流案例:

URL url=new URL("http://www.baidu.com/img/bd_logo1.png");  //指定下载的图片地址

InputStream is=url.openStream();                           //打开服务器的读入连接

BufferedInputStream bis=new BufferedInputStream(is);

 

FileOutputStream fos=new FileOutputStream("e:\\temp\\baidu.png");  //创建文件输出流,用于将接收到的图片流存入该文件,注意文件的扩展名最好保持一致。

BufferedOutputStream bos=new BufferedOutputStream(fos);

 

int n=0;

while((n=bis.read())!=-1){     //边读

bos.write(n);          //边写

}

 

bos.close();

bis.close();

System.out.println("下载完毕");

 

字节流转字符流

   1. InputStreamReader  字节输入流转字符输入流

     OutputStreamWriter  字节输出流转字符输出流

   IntoutStreanReader类

作用: 将字节流转换成字符流,是字节流通向字符流的桥梁。

 

 

  1. 网络通讯层

   三要素:IP地址、端口号、传输协议

 

  1. Tcp协议与Udp协议

两者的区别:

    TCP:连接 == 打电话 == 双方建立通道,信息在通道中传送,双方响应,信息传递可靠性高,但资源开销大,独占一个通道,在断开连接前不能建立另一个连接(两人打电话,第三人不能打入)。

    UDP:无连接 == 寄信 == 就是发送信息,没有开始与结束,一次性传递,也不需要接受方响应,无法保证信息传递的可靠性(寄了,但不一定能收到)。

 

  1. 网络聊天

套接字 Socket:(面向TCP)

   其用于标识客户端请求的服务器和服务,源IP地址和目的IP地址以及源端口号的组合称为套接字

  

  构造方法:Socket(InetAddress address, int port)

              //创建一个流套接字并将其连接到指定 IP 地址的指定端口号。

      例:Socket sk=new Socket(InetAddress.getByName("127.0.0.1"), 8866);

 

getInetAddress(); 远程服务端的IP地址

getPort(); 远程服务端的端口

getLocalAddress(); 本地客户端的IP地址

getLocalPort(); 本地客户端的端口

getInputStream(); 获得输入流

getOutputStream(); 获得输出流

  • 多线程

 

 

 一、进程的概念

  1.进程与线程

  1. 进程==就是正在进行的程序。

   CPU在某一段时间只处理一个程序,程序也是一个进程,当程序结束,进程也消失。

 

B.线程==就是程序中的一个执行路径(控制单元)

   线程在控制着进行的执行。

   它是真正的执行者

 

C.为什么需要多线程?

大型应用程序都需要高效地完成大量任务,其中使用多线程就是一个提高效率的重要途径。

 

 D.进程与线程的关系:

一个进程中至少包含有一个或多个线程。

 

  • 多线程存在的意义

   多线程可以让我们程序部分可以产生同是运行的效果,各玩个的。提高效率是其次,主要是能让多段代码同时执行。

 

 

示例:得到当前线程名

  System.out.println(Thread.currentThread().getName);

  1. 多线程的目的

   为了最大限度的利用CPU资源。

  1. 线程调度

   按照特定的机制为多个线程分配CPU的使用权

  分时调度    抢占式调度

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值