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基础知识的更多相关文章

  1. Java笔记(十四) 并发基础知识

    并发基础知识 一.线程的基本概念 线程表示一条单独的执行流,它有自己的程序计数器,有自己的栈. 1.创建线程 1)继承Thread Java中java.lang.Thread这个类表示线程,一个类可以 ...

  2. 二十四、JAVA的NIO和IO的区别

    一.JAVA的NIO和IO 1.NIO:面向缓冲区(buffer)(分为非阻塞模式IO和阻塞模式IO)组成部分:Channels管道,Buffers缓冲区,Selectors选择器 2.IO:面向流( ...

  3. Java基础(二十四)Java IO(1)输入/输出流

    在Java API中,可以从其中读入一个字节序列的对象称作输入流,而可以向其中写入一个字节序列的对象称为输出流. 输入流的指向称为源,程序从指向源的输入流中读取数据. 输出流的指向是字节要去的目的地, ...

  4. Android学习笔记(四) JAVA基础知识回顾

    一.接口 1)接口中定义的方法都是public权限,并且默认为public,而不是default. 2)接口的实现(implements)是特殊的继承,类似于父类子类的关系,可以向上转型(非常重要). ...

  5. 十四、Java基础---------String、StringBuffer、StringBuilder基本应用

    在前面的博客中曾提及Java的数据类型分为基本数据类型,和引用数据类型,而String便是最常见的应用数据类型,本文将着重介绍这一引用数据类型的用法. String 字符串     String类是对 ...

  6. Python学习(二十四)—— 前端基础之Bookstrap

    转载自:http://www.cnblogs.com/liwenzhou/p/8214637.html 一.Bootstrap介绍 Bootstrap是Twitter开源的基于HTML.CSS.Jav ...

  7. 二十八、Java基础--------正则表达式

    在对字符串进行处理时一方面可以利用String对象的一些处理方法另一方面可以利用正则表达式,但是一般情况下用String对象方法进行处理起来会相对麻烦一些而正则表达式可以很方便的解决问题.为了更好的学 ...

  8. Bootstrap<基础二十四> 缩略图

    Bootstrap 缩略图.大多数站点都需要在网格中布局图像.视频.文本等.Bootstrap 通过缩略图为此提供了一种简便的方式.使用 Bootstrap 创建缩略图的步骤如下: 在图像周围添加带有 ...

  9. java基础知识回顾之---java String final类普通方法

    辞职了,最近一段时间在找工作,把在大二的时候学习java基础知识回顾下,拿出来跟大家分享,如果有问题,欢迎大家的指正. /*     * 按照面向对象的思想对字符串进行功能分类.     *      ...

  10. (C/C++学习笔记) 二十四. 知识补充

    二十四. 知识补充 ● 子类调用父类构造函数 ※ 为什么子类要调用父类的构造函数? 因为子类继承父类,会继承到父类中的数据,所以子类在进行对象初始化时,先调用父类的构造函数,这就是子类的实例化过程. ...

随机推荐

  1. 匿名Lambda函数,C++

    1 // To Compile and Run: g++ -std=c++11 lambda.cc -Wall -O3 && ./a.out 2 3 4 #include <io ...

  2. Vue+SSM+Element-Ui实现前后端分离(2)

    前言:后台使用ssm搭建,对以前学习知识的一个回顾,与此同时来发现自己不足.这里主要采用配置文件方式进行,有部分注解. 目标:搭建ssm框架,并测试成功:(其中也有aop切面的编写) 一.开发工具 I ...

  3. heiamJava16IO流

    Java I/O流 按流的方向分 输入输出流 I表示intput(输入),是数据从硬盘文件读入到内存的过程,称之输入,负责读. O表示output(输出),是内存程序的数据从内存到写出硬盘文件的过程, ...

  4. 基于Dijkstra算法的郑州地铁路径规划

    需要引入geopy库 pip install geopy 安装即可 import requests from bs4 import BeautifulSoup import pandas as pd ...

  5. 在 vuex 中建立一个 permission.js 文件用于合并静态和动态的路由规则

    结果会获取完整的用户的路由规则 // 新建一个vuex模块来专门处理权限相关操作 import { constantRoutes, asyncRoutes } from "@/router& ...

  6. springboot项目导出excel实现

    参见:https://blog.csdn.net/duli_0105/article/details/102809936

  7. 使用ansible批量推送公钥

    准备两个yml文件 send-pubkey.yml - hosts: all remote_user: root # 连接远程主机的用户,密码就是文件中设置好的 ansible_ssh_pass 的值 ...

  8. BLE目录

    CH58x/CH57x 蓝牙从机篇(Peripheral) CH573 CH582 CH579蓝牙从机(Peripheral)/主机(Central)例程讲解一(蓝牙主从机收发数据接口说明) CH57 ...

  9. Linux下C语言程序的内存布局

    在<虚拟地址空间以及编译模式>一节中讲到,虚拟地址空间在32位环境下的大小为 4GB,在64位环境下的大小为 256TB,那么,一个C语言程序的内存在整个地址空间中是如何分布的呢?数据在哪 ...

  10. UGUI六大基础组件——Graphic Raycaster

    一.组件作用 图形摄像投射器是用于检测UI输入事件的射线发射器.通过射线检测玩家和用户的交互,判断是否点击到了UI元素. 注意:不是通过碰撞器来检测的,而是通过图形来检测的. 二.参数解释 ***** ...