四月二十四号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++学习笔记) 二十四. 知识补充
二十四. 知识补充 ● 子类调用父类构造函数 ※ 为什么子类要调用父类的构造函数? 因为子类继承父类,会继承到父类中的数据,所以子类在进行对象初始化时,先调用父类的构造函数,这就是子类的实例化过程. ...
随机推荐
- PTA1003 我要通过! (20 分)
PTA1003 我要通过! (20 分) "答案正确"是自动判题系统给出的最令人欢喜的回复.本题属于 PAT 的"答案正确"大派送 -- 只要读入的字符串满足下 ...
- curl 查看响应时间
curl -o /dev/null -s -w "time_namelookup:%{time_namelookup}\ntime_connect: %{time_connect}\ntim ...
- swoft-个基于 Swoole 原生协程的PHP 微服务框架
刚才百度了一下swoft框架,官网打不开了,仓库也暂停了.不由感慨.曾经和同事踩了许多坑使用此极其小众的框架完成微服务项目.使用它的唯一目的就是提高程序性能(底层使用了协程),为此大家都学习了很多新知 ...
- Two Sum:给出一个整数数组,返回两个数的下标值,令其和等于一个指定的目标值 #Leetcode
// Given nums = [2, 7, 11, 15], target = 9, // Because nums[0] + nums[1] = 2 + 7 = 9, // return [0, ...
- Qt滚动条样式
Qt手动设置滚动条的qss样式 QScrollBar:vertical { width: 14px; margin: 16px 0 16px 0; background: #eaeaea; } QSc ...
- L02.从图灵机到通用计算机
将程序载入到内存(存储器)中,用一个指针指向它, 再载入到cpu(控制器)中进行解释执行 *(取指执行,产生结果) 取指执行 = 控制器从存储器中取出数据后,分析指令,运算器执行逻辑运算. PC= ...
- VUE相关面试题目01
一.MVVM是什么; MVC: MVVM的描述: 常见库实现数据双向绑定的效果: 发布订阅模式; ...
- 复杂数据类型(signal)的解读-C语言基础
这一篇文章要探讨的是C语言中复杂数据类型的解读.涉及到signal()函数数据类型的解读(并不解释signal()的作用)以及对于数据类型的理解,属于C语言基础篇. 在开始解读signal()这种复杂 ...
- 4、jmeter的断言技术
断言:从反馈的结果来个需求匹配,是不是想要的内容 注:断言必要的时候才用 用过了会影响速度 1.操作步骤: 去选择自己想要响应的文本或者代码或者信息等等..... 2.断言相应大小的字节 3.断言响 ...
- JS实现10进制和26进制的转换
转载:https://blog.csdn.net/quentain/article/details/52803891 //将26进制转10进制 var ConvertNum = function (s ...