四月二十四号java基础知识
1.输入输出是指程序与外部设备或其他计算机进行交互的操作
2.流(stream)是指计算机各部件之间的数据流动
流的内容上划分:流分为字节流和字符流
3.输入流:将数据从外设或外存(如键盘、鼠标、文件等)传递到应用程序的流称为输入流(input
stream)
输出流:将数据从应用程序传递到外设或外存(如屏幕、打印机、文件等)的流称为输出流
(output stream)
也就是说接收数据时可以认为是读数据流,程序发送数据时可以认为是写数据流
4.采用数据流来处理输入输出的目的是使得程序的输入输出操作独立于相关设备
流式输入输出的特点是数据的获取和发送是沿着数据序列顺序进行
5.使用缓冲流(buffered stream)即为一个流配有一个缓冲区(buffer),这个缓冲区就是专门
用于传送数据的一块内存
缓冲流提高了内存与外部设备之间的数据传输效率
6.java.io包中有四个基本类:InputSteam、OutputStream、及Reader、Writer类
它们分别处理字节流和字符流
输入输出流包含字节流和字符流;
字节流:处理字节数据(基本类型为:InputSteam,OutputStream)
字符流:处理字符数据(基本类型:Reader、Writer)
7.InputSteam、OutputStream、及Reader、Writer类是抽象类,用于数据流的输入输出流
File是文件类,用于磁盘文件与文件夹的管理;
RandomAcessFile是随机访问文件类,用于实现对磁盘文件的随机读写操作
8.InputSteam,OutputStream流类通常用来处理“位流”(bit stream)即字节流,这种流通常
被用来读写诸如图片、音频、视频之类的二进制数据,也就是二进制文件,但也可以处理
文本文件;而Reader与Writer类则是用来处理“字符流”(character stream)也就是
文本文件
9.InputSteam、OutputStream、及Reader、Writer类是抽象类,所以一般而言,并不会使用
这些类,因此不能表明它们具体对应那种I/O设备。而通常是根据这些类所派生的子类来对文件
处理,因为这些子类与具体的I/O设备相对应
10.使用InputStream和OutputStream流类:
注意:虽然字节流可以操作文本文件,但不提倡这样做,因为字节流操作文本文件,如果文件
中有汉字,可能出现乱码。这是因为字节流不能直接操作Unicode字符所致。
建议使用字符流操作文本文件
11.输入输出的应用:
文件输入输出流:
FileInputSteam和FileOutputStream分别是InputSteam,OutputStream
的直接子类,这两个子类主要是负责负责对本地磁盘文件的顺序输入和输出操作的流。
FileInputSteam类的对象表示一个文件字节输入流,从中可读取一个或一批字节。在生成
FileInputSteam类的对象时,若指定的文件找不到,则抛出FileNotFoundException异常
,该异常必须捕获或声明抛出。
FileOutputStream类的对象表示一个文件字节输入流,可向六中写入一个或一批字节
在生成FileOutputSteam类的对象时,若指定的文件不存在,则创建一个新的文件,若已存在,
则清除原文件的内容。在进行文件的读写操作时会产生IOException异常,该异常必须捕获或
声明抛出
12.FileDescriptor是java.io包中定义的另一个类,该类不能实例化,该类中有三个静态成员
:in,ou,err,分别对应标准输入流,标准输出流,标准错误流
13.在主方法头添加throws IOException就不用在方法中添加catch语句捕获输入输出异常了
14.fi.available():返回流中的可读取的字节数
fi.read(b);//将图像文件读入b数组
fo.write(b);//将数组b中数据写入新文件“风景1.jpg”
15.顺序输入输出流(SequenceInputStream):
其功能是将多个输入流顺序连接在一起,形成单一的输入输出流,。没有对应的输出流存在。
在进行输入时,顺序输入流依次打开每个输入流并读取数据,在读取完毕后将该流关闭,然后
自动切换到下一个输入流。
也就是说,当一个流中读取数据遇到EOF时,SequenceInputStream将自动转向下一个输入流,
直到构成SequenceInputStream类的最后一个输入流读取到EOF时为止。
16.管道输入输出流(PipedInputStream)(PipedOutputStream):
管道字节输入流PipedInputStream和管道字节输出流PipedInputStream类提供了利用管道
方式进行数据输入个数据输出管理的类。
17.管道流用来将一个程序或线程的输出连接到另外一个程序或线程作为输入,使得相连线程
能够通过PipedInputStream和PipedInputStream流进行数据交换,从而实现程序内部线程
间的通信或不同程序间的通信
18.PipedInputStream和PipedOutputStream类是InputStream和OutputStream的直接子类
这两个类必须结合使用,其中,管道输入流作为管道的接收端,管道输出流作为管道的发送端
19.PipedInputStream是管道的接收端,它必须与一个作为发送端的PipedOutputStream
对象相连;PipedOutputStream是管道的发送端,它必须与一个作为接收端的
PipedInputStream对象相连
20.管道输入输出流提供了两种连接方法:
第一种在构造方法中给出对应的管道流,在创建对象时进行连接。构造如下:
1)PipedInputStream(PipedOutputStream src),创建一个管道输入流,并将其连接到
接收端src的管道字节输出流
PipedOutputStream(PipedInputStream src),创建一个管道输出流,并将其连接到
发送端src的管道字节输入流
2)第二种是利用管道字节输入输出流提供的connect()方法进行连接
PipedInputStream类的常用方法:管道连接方法
连接到指定输出流,管道输入流将从该输出流接收数据
public void connect(PipedOutputStream src)
PipedOutputStream 类的常用方法:管道连接方法
连接到指定输入流,管道输出流将从该输入流读取数据
public void connect(PipedInputStream snk)
总结:今天初步学习了java语言的输入输出流,了解了输入流和输出流,以及它们的子类
通过输入输出流类创建对象对文件进行读写操作,包括二进制文件还有文本文件都可以
另外,对管道输入输出的相互作用觉得跟用户和客户端有点相似
四月二十四号java基础知识的更多相关文章
- Java笔记(十四) 并发基础知识
并发基础知识 一.线程的基本概念 线程表示一条单独的执行流,它有自己的程序计数器,有自己的栈. 1.创建线程 1)继承Thread Java中java.lang.Thread这个类表示线程,一个类可以 ...
- 二十四、JAVA的NIO和IO的区别
一.JAVA的NIO和IO 1.NIO:面向缓冲区(buffer)(分为非阻塞模式IO和阻塞模式IO)组成部分:Channels管道,Buffers缓冲区,Selectors选择器 2.IO:面向流( ...
- Java基础(二十四)Java IO(1)输入/输出流
在Java API中,可以从其中读入一个字节序列的对象称作输入流,而可以向其中写入一个字节序列的对象称为输出流. 输入流的指向称为源,程序从指向源的输入流中读取数据. 输出流的指向是字节要去的目的地, ...
- Android学习笔记(四) JAVA基础知识回顾
一.接口 1)接口中定义的方法都是public权限,并且默认为public,而不是default. 2)接口的实现(implements)是特殊的继承,类似于父类子类的关系,可以向上转型(非常重要). ...
- 十四、Java基础---------String、StringBuffer、StringBuilder基本应用
在前面的博客中曾提及Java的数据类型分为基本数据类型,和引用数据类型,而String便是最常见的应用数据类型,本文将着重介绍这一引用数据类型的用法. String 字符串 String类是对 ...
- Python学习(二十四)—— 前端基础之Bookstrap
转载自:http://www.cnblogs.com/liwenzhou/p/8214637.html 一.Bootstrap介绍 Bootstrap是Twitter开源的基于HTML.CSS.Jav ...
- 二十八、Java基础--------正则表达式
在对字符串进行处理时一方面可以利用String对象的一些处理方法另一方面可以利用正则表达式,但是一般情况下用String对象方法进行处理起来会相对麻烦一些而正则表达式可以很方便的解决问题.为了更好的学 ...
- Bootstrap<基础二十四> 缩略图
Bootstrap 缩略图.大多数站点都需要在网格中布局图像.视频.文本等.Bootstrap 通过缩略图为此提供了一种简便的方式.使用 Bootstrap 创建缩略图的步骤如下: 在图像周围添加带有 ...
- java基础知识回顾之---java String final类普通方法
辞职了,最近一段时间在找工作,把在大二的时候学习java基础知识回顾下,拿出来跟大家分享,如果有问题,欢迎大家的指正. /* * 按照面向对象的思想对字符串进行功能分类. * ...
- (C/C++学习笔记) 二十四. 知识补充
二十四. 知识补充 ● 子类调用父类构造函数 ※ 为什么子类要调用父类的构造函数? 因为子类继承父类,会继承到父类中的数据,所以子类在进行对象初始化时,先调用父类的构造函数,这就是子类的实例化过程. ...
随机推荐
- 用python提取txt文件中的特定信息并写入Excel
这个是用 excel里面的 去掉空格最后导出的一个list: 原本是有空格的 后面是抵消了中间的空格. 然后 这里侧重说一下什么是split()函数 语法:str.split(str="&q ...
- Centos7下搭建部署DoClever接口管理平台
项目地址: github:https://github.com/sx1989827/DOClever 码云:https://gitee.com/sx1989827/SBDoc 1.根据官方文档,先安装 ...
- openvas漏洞扫描:使用openvas时扫描漏洞时,报告中显示的数据与数据库数据不同
使用openvas设备进行漏洞扫描时,报告中的漏洞数量与readis数据库中查找到的漏洞数量不同 原因是,openvas的代码中默认在报告中显示的最小质量检测为70%.如图: 上图详细链接为:http ...
- mmdetection RPNHead--_init_()函数
RPNHead类包含的函数: (1)_init_():初始化函数 (2)_init_layers():设置Head中的卷积层 (3)forward_single():单尺度特征图的前向传播 (4)lo ...
- 【组会】2023_1_6 4d mmwave
A NEW AUTOMOTIVE RADAR 4D POINT CLOUDS DETECTOR BY USING DEEP LEARNING ICASSP 2021 - 2021 IEEE Inter ...
- Spyglass CDC工具使用(五)
最近一直在搞CDC (clock domain crossing) 方面的事情,现在就CDC的一些知识点进行总结. 做CDC检查使用的是Spyglass工具.以下内容转载自:Spyglass之CDC检 ...
- 帝国CMS 登录后跳转ecmsadmin.php 白页 多个解决方案
帝国CMS 6.6 版本, 运维的网站查询除了问题, 把网站数据库和整体网站拷贝到本地服务器, 配置好 e/config/config.php 和 e/class/config.php 两个目录 ...
- C#向其实进程子窗体发送指令
近日,想在自己的软件简单控制其它软件的最大化最小化,想到直接向进程发送指令,结果一直无效,经过Spy++发现,原来快捷方式在子窗体上,所以需要遍历子窗体在发送指令,以下为参考代码: 1 [DllImp ...
- java中取数组第一个元素
java中取数组第一个元素 var a=[1,2,2,3,4];console.log(a);a.shift();console.log(a); pop:删除原数组最后一项,并返回删除元素的值 ...
- github相关操作
github里面有很多大神写的代码,但是有不少小伙伴对使用它比较的生疏,下面我就把它的简单和常规的操作说一下,希望对你查看github有一定的帮助. watch :会持续收到该项目的动态 fork : ...