Java中的字节流
File 类里面的常量:*
public static final char separatorChar
public static final String separator
public static final char pathSeparatorChar
public static final String pathSeparator
separatorChar 和 separator 系统相关的默认名称分隔符
pathSeparatorChar 和 pathSeparator 依赖于系统的路径分隔符。
在UNIX系统上,这个字符是’:’ 和 “:”;
在Microsoft Windows系统上,它是’;’ 和 “;”。
Java流
IO流的作用:就是可以对文件或者网络中的数据进行读、写的操作。
把数据从磁盘、网络中读取到程序中来,用到的是输⼊流。
把程序中的数据写⼊磁盘、网络中,用到的是输出流。
把程序中的数据写⼊磁盘、网络中,用到的是输出流。
字节流是8位通⽤字节流,其基本单位是字节,字节流的基类是InputStream类和OutputStream类,它们是抽象类。
字符流是16位Unicode字符流,基本单位是Unicode字符,字符流最适合⽤来理字符串和⽂本,因为它们⽀持
国际上⼤多数的字符集和语言。字符流的基类是Reader类和Writer类,它们也是抽象类。
字节流
InputStream
在Java中, InputStream (输入流)是一个抽象类,用于从不同数据源读取字节数据。
它是Java I/O类库中的一部分,用于处理输入数据。 InputStream 的主要目的是提供一种通用的方式来读取字节
流,而不考虑数据源的具体类型。
方法:
方法名
方法描述
int read()
从输入流中读取下一个字节数据
int read(byte[] b)
从输入流中读取数据,并将数据存储在缓存区数
组b中,返回实际读取的字节数
把程序中的数据写⼊磁盘、⽹络中,⽤到的是输出流。
简单记:输⼊流(读数据)、输出流(写数据)
Java的输出流主要由OutputStream类和Write类作为基类,而输入流则主要由InputStream类和Reader类作为基
类。
输入/输出流又分为字节流和字符流两种形式:
字节流是8位通⽤字节流,其基本单位是字节,字节流的基类是InputStream类和OutputStream类,它们是
抽象类。
字符流是16位Unicode字符流,基本单位是Unicode字符,字符流最适合⽤来理字符串和⽂本,因为它们⽀持
国际上⼤多数的字符集和语⾔。字符流的基类是Reader类和Writer类,它们也是抽象类。
字节流
InputStream
在Java中, InputStream (输入流)是一个抽象类,用于从不同数据源读取字节数据。
它是Java I/O类库中的一部分,用于处理输入数据。 InputStream 的主要目的是提供一种通用的方式来读取字节
流,而不考虑数据源的具体类型
int read(byte[] b,int offset, int len) //从输入流中读取最多len长度的字节,保存到字节数组b中,保存的位置从offset开始
void close() //关闭输入流
byte[] readAllBytes() //从输入流中读取所有剩余字节。
FileInputStream
构造3种:
FileInputStream(File file)
FileInputStream(FileDescriptor fdObj)
FileInputStream(String name)
方法:
read() //从剩余部分开始读取,放到byte[],返回读取的字节数
readAllBytes() //从剩余的字节读完,返回byte[]
int available() //返回可读取的剩余字节数的估计值(或 跳过)从此输入流中,而不会被下一个阻塞调用此输入流的方法。
int read(byte[] b) //从此输入读取多达字节的数据 流式传输到字节数组中
int read(byte[] b, int off, int len) //从此输入流读取多达字节的数据 到字节数组中。
long skip(long n) //跳过n个字节读取
注:用字节读汉字,按个读或者全部读
FileOutStream
构造5种:
FileOutputStream(File file): 创建文件输出流以写入指定File对象表示的文件。
FileOutputStream(File file, boolean append): 创建文件输出流以写入指定File对象表示的文件,append表示是否拼接。
FileOutputStream(String name): 创建文件输出流以写入具有指定名称的文件。
FileOutputStream(String name, boolean append): 创建文件输出流以写入具有指定名称的文件, append表示是否拼接。
FileOutputStream(FileDescriptor fdObj)创建要写入指定文件的文件输出流 描述符,表示与实际的现有连接文件。
方法:
str.getBytes() //将字符串转成byte[]
flush() //刷新
write() //往文件中写作业
字节流复制文件:
3种方法:
copy、 读入再写出、OutputStream中的tranferTo
IO流资源释放
JDK7以前的资源释放:try…catch…finally
JDK7以后的资源释放:try-with-resourses
只能是实现了AutoCloseable这个接口的类才可以使用,会自动调用fulsh(),close()
try(){}:将异常抛出给JVM可单独出现