java输入输出流
Java语言将程序中数据的输入输出过程看作是一种数据流动的过程
–将提供输入数据的数据源称作输入流(input stream)
–将输出数据的目的地称作输出流(output stream)
–键盘-输入流
–显示器-输出流
- java程序的输入输出
–数据源:键盘,硬盘,网络
–目的地:显示器,硬盘,网络
–字节流:byte 底层表示
例:
“a” :97,61,01100001
–字符流:char 对数据进行解释
例:
“abc中国”:61 62 63 d6 d0 b9 fa(ANSI编码-混合编码)
- Java API 提供一组输入输出流类
–Java.io包
–字节型 输入输出流(根类)
InputStream
java.io.InputStream类说明文档 |
---|
public abstract class InputStream extends Object implements Closeable |
类成员:
InputStream():构造方法
int available():返回字节输入流中可读的字节数
abstract int read():读出一个字节
int read(byte[] b):根据b的长度读出若干个字节存放在b中
int read(byte[] b ,int off,int len):读出len个字节并存放在b中
long skip(long n):跳过n个字节
void close():关闭字节输入流
OutputStream
java.io.OutputStream类说明文档 |
---|
public abstract class OutputStream extends Object implements Closeable,Flushable |
类成员:
OutputStream():构造方法
abstract void write(int b):写入一个字节
void write(byte[] b):写入数组b
void write(byte[] b ,int off,int len):写入数组b中的len个字节
void flush():立即输出缓存里的内容
void close():关闭字节输出流
字节型输入输出流:
System.in--------------------static InputStream
System.out------------------static PrintStream
–字符型 输入输出流(根类)
Reader
Writer
字节型包装类(将字节流包装成字符流,是继承自抽象类,字符输入输出类,字节输入输出类)
InputStreamReader
OutputStreamWriter
关系
标准IO
键盘输入:数据之间以空格或tab键隔开,用扫描器类进行扫描,格式化输入
扫描器类:Scanner
显示器输出:将不同类型数据统一为字符串,格式化输出
打印流类:PrintStream OutputStream的二级子类
文件IO
文件类 File
文本文件
存储字符类型的数据
ASCLL编码,GBK编码
具有换行的格式
通用性强
流继承树:
FileReader,FileWriter:文本文件读写
BufferedReader,BufferedWriter:带缓冲的字符型输入输出流,对FileReader,FileWriter的包装
PrintWriter:字符型打印流类,文件格式化输出,用法与显示器字节型打印流类printStream一致
二进制文件
直接以内存的二进制存储格式在外存上存储数据
可保存任意类型的数据
通用性差
交换数据需要遵循格式标准:JPEG GIF TIFF等
字节型输入输出流类族
二进制文件IO类:FileInputStream,FileOutputStream
带缓冲区的字节型输出输出流类:BufferedInputStream,BufferedOutputStream
带反序列化/序列化功能的字节型输入输出流类:
ObjectInputStream
ObjectOutputStream
对象序列化
实现 serializable接口
public interface Serializable
标记接口
某些字段不希望被序列化,定义类时为这些字段添加修饰符“transient”,定义成非持久化字段
注:非持久化字段,和静态字段都不参与序列化处理
文本编辑
使用图形界面,用户在文本编辑框(JTextArea)中编辑文本文件,将编辑好的内容保存在文本文件中
文本处理
分词,查找,替换等字符串操作
String:split()
正则表达式
单个字符:
单词:
词组:
句子:
模式类Pattern:描述比较复杂的分隔符模式,用于文本字符串分词,可以创建下一步词法分析所需的匹配器对象
匹配器类Matcher
文本词法处理过程
一:创建模式对象Pattern
二:创建匹配对象Matcher
三:matcher进行分词
图像处理
javax.swing.ImageIcon:不可修改图标类
可以用JLabel来显示图标类图像
java.awt.image.BufferedImage:可以修改的带缓冲图像类
使用画布类Canvas来显示带缓存的图像,通过重写绘图方法paint()来显示图像
图像输入输出类javax.imageio.ImageIO
声音处理
录音:对麦克风输入的声音进行数字化采样,然后将其保存成音频文件
播放:播放音频文件的声音
音频格式:编码算法(PCM或MP3),采样率(8khz或16khz),采样位数,声道数,帧率,每帧字节数等参数
AudioFormat:音频格式类
音频文件格式:WAVE,AIFF,AU,MP3,WMA等
音频系统:本地计算机的音频系统(AudioSystem)
数据线:
TargetDataLine:连接麦克风的数据线
SourceDataLine:连接音箱
Clip:音频片段
音频输入流:AudioInputStream