网站建设正文字体多大合适,wordpress怎么让文章只显示摘要,汕头模板建站代理,app系统制作开发1、IO流
IO流#xff1a;数据传输过程类似于水流#xff0c;故称IO流 IO流的的40多个类都是从4个抽象类基类中派生出来的#xff0c;前者是字节#xff0c;后者是字符
InputStream/Reader:所有的输入流的基类OutputStream/Writer:所有输出流的基类
2、字符流和字节流的区…1、IO流
IO流数据传输过程类似于水流故称IO流 IO流的的40多个类都是从4个抽象类基类中派生出来的前者是字节后者是字符
InputStream/Reader:所有的输入流的基类OutputStream/Writer:所有输出流的基类
2、字符流和字节流的区别
字符流是由Java虚拟机将字节转换得到的这个过程比较耗时如果我们不知道编码类型就很容易出现问题根据实际应用中操作对象的不同选用合适的方法Reader 用于读取文本 InputStream 用于读取原始字节字符和字节的编码转换utf8 :英文占 1 字节中文占 3 字节unicode任何字符都占 2 个字节gbk英文占 1 字节中文占 2 字节
3、字节流
1、InputStream字节输入流
1、InputStream 用于从源头通常是文件读取数据字节信息到内存中
2、常用方法
read():返回输入流中下一个字节的数据skip():忽略输入流的n个字节available():返回输入流中可以读取的字节数close():关闭输入流释放相关的系统资源readAllBytes():读取输入流中的所有字节返回字节数组transferTo(OutputStream out):将所有字节从一个输入流传递到一个输出流
3、常用子类
FileInputStream和文件相关的字节输入流类
//新建一个字节文件输入流对象
InputStream fis new FileInputStream(input.txt)BufferedInputStream字节缓存输入流
// 新建一个 BufferedInputStream 对象
BufferedInputStream bufferedInputStream new BufferedInputStream(new FileInputStream(input.txt));
// 读取文件的内容并复制到 String 对象中
String result new String(bufferedInputStream.readAllBytes());
System.out.println(result);DataInputStream用于读取指定类型数据不能单独使用必须结合 FileInputStream
FileInputStream fileInputStream new FileInputStream(input.txt);
//必须将fileInputStream作为构造参数才能使用
DataInputStream dataInputStream new DataInputStream(fileInputStream);
//可以读取任意具体的类型数据
dataInputStream.readBoolean();
dataInputStream.readInt();
dataInputStream.readUTF();ObjectInputStream用于从输入流中读取Java对象反序列化
ObjectInputStream input new ObjectInputStream(new FileInputStream(object.data));
MyClass object (MyClass) input.readObject();
input.close();2、OutputStream字节输出流
1、OutputStream 用于将数据字节信息写入到目的地通常是文件
2、常用方法
write(int b) 将特定字节写入输出流。flush() 刷新此输出流并强制写出所有缓冲的输出字节。close() 关闭输出流释放相关的系统资源。
3、常用子类
FileOutputStream最常用的字节输出流对象可直接指定文件路径可以直接输出单字节数据也可以输出指定的字节数组BufferedOutputStream字节缓冲输出流
FileOutputStream fileOutputStream new FileOutputStream(output.txt);
BufferedOutputStream bos new BufferedOutputStream(fileOutputStream)DataOutputStream 用于写入指定类型数据不能单独使用必须结合 FileOutputStreamObjectOutputStream将对象写入到输出流(序列化)
4、字符流
字符流默认采用的是 Unicode 编码我们可以通过构造方法自定义编码
1、Reader字符输入流
**1、Reader**用于从源头通常是文件读取数据字符信息到内存中
2、常用方法
read() : 从输入流读取一个字符skip(long n) 忽略输入流中的 n 个字符 ,返回实际忽略的字符数。close() : 关闭输入流并释放相关的系统资源
3、常用子类
FileReaderInputStreamReader 是字节流转换为字符流的桥梁其子类 FileReader 是基于该基础上的封装可以直接操作字符文件
FileReader fileReader new FileReader(input.txt);2、Writer字符输出流
**1、Writer**用于将数据字符信息写入到目的地通常是文件
2、常用方法
write(int c) : 写入单个字符write(String str) 写入字符串append(char c) 将指定的字符附加到指定的 Writer 对象并返回该 Writer 对象flush() 刷新此输出流并强制写出所有缓冲的输出字符。close():关闭输出流释放相关的系统资源
3、常用子类
FileWriterOutputStreamWriter 是字符流转换为字节流的桥梁其子类 FileWriter 是基于该基础上的封装可以直接将字符写入到文件
try (Writer output new FileWriter(output.txt)) {output.write(你好我是Guide。);
} catch (IOException e) {e.printStackTrace();
}5、字节缓冲流
1、字节缓冲流 IO 操作是很消耗性能的缓冲流将数据加载至缓冲区一次性读取/写入多个字节从而避免频繁的 IO 操作提高流的传输效率
**2、和字节流的性能差别**字节流和字节缓冲流的性能差别主要体现在我们使用两者的时候都是调用 write(int b) 和 read() 这两个一次只读取一个字节的方法的时候。由于字节缓冲流内部有缓冲区字节数组因此字节缓冲流会先将读取到的字节存放在缓存区大幅减少 IO 次数提高读取效率
3、常用类 BufferedInputStream字节缓冲输入流和BurreredOutputStream字节缓冲输出流
6、字符缓冲流
BufferedReader 字符缓冲输入流和 BufferedWriter字符缓冲输出流 类似于 BufferedInputStream字节缓冲输入流和BufferedOutputStream字节缓冲输入流内部都维护了一个字节数组作为缓冲区
7、打印流
System.out 实际是用于获取一个 PrintStream 对象print方法实际调用的是 PrintStream 对象的 write 方法。
System.out.println(Hello);PrintStream 属于字节打印流与之对应的是 PrintWriter 字符打印流。
参考
https://javaguide.cn/java/io/io-basis.html