@MRsunhuimin
2019-07-29T13:26:50.000000Z
字数 2924
阅读 210
java基础
输入/输出 | 字节流 | 字符流 |
---|---|---|
输入流 | Inputstream | Reader |
输出流 | OutputStream | Writer |
1. Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列。
2. Java的I/O流提供了读写数据的标准方法。任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法。
使用Decorator模式,按功能划分Stream,可以动态装配这些Stream,以便获得需要的功能。
例如,需要一个具有缓冲的文件输入流,则应当组合使用FileInputStream和BufferedInputStream。
1. 数据流是一串连续不断的数据的集合
2. “流是磁盘或其它外围设备中存储的数据的源点或终点。”
3. java中将输入输出抽象称为流
4. 流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流。
一组有序,有起点和终点的字节的数据序列。包括输入流和输出流。
采用数据流的目的就是使得输出输入独立于设备。
程序从输入流读取数据源。数据源包括外界(键盘、文件、网络…),即是将数据源读入到程序的通信通道。不关心数据源来自何种设备(键盘,文件,网络)。
程序向输出流写入数据。将程序中的数据输出到外界(显示器、打印机、文件、网络…)的通信通道。不关心数据的目的是何种设备(键盘,文件,网络)。
数据流中最小的数据单元是字节
数据流中最小的数据单元是字符,
Java中的字符是Unicode编码,一个字符占用两个字节。
Java程序可通过命令行参数与外界进行简短的信息交换,同时,也规定了与标准输入、输出设备,如键盘、显示器进行信息交换的方式。而通过文件可以与外界进行任意数据形式的信息交换。
System.out.println();
//java系统自带的标准数据流:java.lang.System:
public final class System extends Object{
static PrintStream err;//标准错误流(输出)
static InputStream in;//标准输入(键盘输入流)
static PrintStream out;//标准输出流(显示器输出流)
}
//注意:
//(1)System类不能创建对象,只能直接使用它的三个静态成员。
//(2)每当main方法被执行时,就自动生成上述三个对象。
System.in读取标准输入设备数据(从标准输入获取数据,一般是键盘),其数 据类型为InputStream。方法:
1. int read() //返回ASCII码。若,返回值=-1,说明没有读取到任何字节读取工作结束。
2. int read(byte[] b)//读入多个字节到缓冲区b中返回值是读入的字节数
System.out向标准输出设备输出数据,其数据类型为PrintStream。方法:
1. Void print(参数)
2. Void println(参数)
I/O体系
1.流式部分 2.非流式部分 3.其他
1.1字节流 1.2字符流
字节流——InputStream OutputStream
字符流——Writer Reader
非流式——File RandomAccessFile
Java I/O主要包括如下几个层次,包含三个部分:
1.流式部分――IO的主体部分;
2.非流式部分――主要包含一些辅助流式部分的类,如:File类、RandomAccessFile类和FileDescriptor等类;
3.其他类–文件读取部分的与安全相关的类,如:SerializablePermission类,以及与本地操作系统相关的文件系统的类,如:FileSystem类和Win32FileSystem类和WinNTFileSystem类。
主要的类如下:
1. File(文件特征与管理):用于文件或者目录的描述信息,例如生成新目录,修改文件名,删除文件,判断文件所在路径等。
2. InputStream(二进制格式操作):抽象类,基于字节的输入操作,是所有输入流的父类。定义了所有输入流都具有的共同特征。
3. OutputStream(二进制格式操作):抽象类。基于字节的输出操作。是所有输出流的父类。定义了所有输出流都具有的共同特征。
Java中字符是采用Unicode标准,一个字符是16位,即一个字符使用两个字节来表示。为此,JAVA中引入了处理字符的流。
4. Reader(文件格式操作):抽象类,基于字符的输入操作。
5. Writer(文件格式操作):抽象类,基于字符的输出操作。
6. RandomAccessFile(随机文件操作):它的功能丰富,可以从文件的任意位置进行存取(输入输出)操作。
在Java语言的java.io包中,由File类提供了描述文件和目录的操作与管理方法。但File类不是InputStream、OutputStream或Reader、Writer的子类,因为它不负责数据的输入输出,而专门用来管理磁盘文件与目录。
作用:File类主要用于命名文件、查询文件属性和处理文件目录。
File类共提供了三个不同的构造函数,以不同的参数形式灵活地接收文件和目录名信息。构造函数:
1. File (String pathname)
例:File f1=new File(“FileTest1.txt”);//创建文件对象f1,f1所指的文件是在当前目录下创建的FileTest1.txt
2. File (String parent , String child)
例:File f2=new File(“D:\\dir1”,”FileTest2.txt”) ;//注意:D:\\dir1目录事先必须存在,否则异常
3. File (File parent , String child)
例: File f4=new File(“\\dir3”);
File f5=new File(f4,”FileTest5.txt”);
//在如果 \\dir3目录不存在使用f4.mkdir()先创建一个对应于某磁盘文件或目录的File对象一经创建, 就可以通过调用它的方法来获得文件或目录的属性。
补充:
File类的方法:
(1) exists()测试磁盘中指定的文件或目录是否存在
(2) mkdir()创建文件对象指定的目录(单层目录)
(3) createNewFile()创建文件对象指定的文件
(4) list()返回目录中所有文件名字符串