Java基础(十七)——字节流与字符流
程序员文章站
2022-07-13 14:56:31
...
字节流与字符流的相互转换:
字节流:Stream结尾的
字符流:Reader和Writer结尾的
输出字节流中在写入数据后不用刷新
练习:读文件输出到命令行
数据源:读文件(字符流)
输出:标准输出流(字节流)————》字符流
方法一:字符流读,字节流写
import java.io.*;
public class 字符读字节输出 {
public static void main(String[] args) throws IOException {
//高效流也称包装流,本身并不具备读写功能,所以我们要传入一个具备读写的输入流
//创建输入流对象
BufferedReader br = new BufferedReader(new FileReader("Test.java"));
//创建输出流对象
OutputStream os = System.out; //字节流
String line;
while((line = br.readLine()) != null){
os.write(line.getBytes());
os.write("\r\n".getBytes());
}
os.close();
br.close();
}
}
由于标准输入流是一个字节输入流,所以只能输出字节或者字节数组,但是我们读取到的数据则是字符串,如果想进行输出还需要转换成字节数组
我们要想通过标注输出流输出字符串,把标准输出流转换成一种字符输出流即可。
字节输出流————》字符输出流OutputStreamWriter(OutputStream out)
字符流读,字节流转换为字符流输出
import java.io.*;
public class 字符读字节输出 {
public static void main(String[] args) throws IOException {
//高效流也称包装流,本身并不具备读写功能,所以我们要传入一个具备读写的输入流
//创建输入流对象
BufferedReader br = new BufferedReader(new FileReader("Test.java"));
//创建输出流对象
//OutputStream os = System.out; //字节流,标准输出流
//字节流转化成字符流
Writer w = new OutputStreamWriter(System.out);//多态,父类型指向子类对象
String line;
while((line = br.readLine()) != null){
w.write(line);
w.write("\r\n");
}
w.close();
br.close();
}
}
输出流也用高效输出流,用包装流
import java.io.*;
public class 字符读字节输出 {
public static void main(String[] args) throws IOException {
//高效流也称包装流,本身并不具备读写功能,所以我们要传入一个具备读写的输入流
//创建输入流对象
BufferedReader br = new BufferedReader(new FileReader("Test.java"));
//创建输出流对象
//OutputStream os = System.out; //字节流,标准输出流
//字节流转化成字符流
Writer w = new OutputStreamWriter(System.out);//多态,父类型指向子类对象
BufferedWriter bw = new BufferedWriter(w);
String line;
while((line = br.readLine()) != null){
bw.write(line);
bw.newLine();
}
bw.close();
br.close();
}
}
最后版本:
import java.io.*;
public class 字符读字节输出 {
public static void main(String[] args) throws IOException {
//高效流也称包装流,本身并不具备读写功能,所以我们要传入一个具备读写的输入流
//创建输入流对象
BufferedReader br = new BufferedReader(new FileReader("Test.java"));
//创建输出流对象
//OutputStream os = System.out; //字节流,标准输出流
//字节流转化成字符流
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
//OutputStreamWriter将字节流转化成字符流。System.out是标准输出流(字节流)
String line;
while((line = br.readLine()) != null){
bw.write(line);
bw.newLine();
}
bw.close();
br.close();
}
}
练习:读命令行写入到文件中
标准输入(字节流),字符流写入
数据源:读取键盘录入的数据 标准输入流(字节流) System.in
目的地:项目根目录下 FileWriter(字符流)
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
public class 字节读字符写入 {
public static void main(String[] args) throws IOException {
//创建输入流对象
InputStream is = System.in;
//创建输出流对象
FileWriter fw = new FileWriter("a.txt");
//读写数据
byte[] bys = new byte[1024];
int len;
while((len = is.read(bys)) != -1){
fw.write(new String(bys,0,len));
fw.flush();
}
fw.close();
is.close();
}
}
转换流:需要把字节输入流转换成字符输入流:InputStreamReader(InputStream)
import java.io.*;
public class 字节读字符写入 {
public static void main(String[] args) throws IOException {
//创建输入流对象
InputStream is = System.in;
Reader fr = new InputStreamReader(is); //多态,用FileReader不行,不是子父类关系
//创建输出流对象
FileWriter fw = new FileWriter("a.txt");
//读写数据
char[] chs = new char[1024];
int len;
while((len = fr.read(chs)) != -1){
fw.write(new String(chs,0,len));
fw.flush();
}
fw.close();
is.close();
}
}
打印流:只能输出不能输入
PrintStream:System.out.print()和System.out.println();
省了:两个步骤:自动刷新和自动换行
写:
读:
解决对象输入流读取对象出现的异常的问题
解决对实现序列化接口出现的警告问题
上一篇: 实时通信 socketio nio 总结
下一篇: js+java实现登录滑动图片验证功能
推荐阅读
-
Java基础(十七)——字节流与字符流
-
Java字节流与字符流
-
阿里Java学习路线:阶段 1:Java语言基础-Java语言高级特性:第16章:字节流与字符流:课时75:Writer字符输出流
-
【java基础】采用字节流的文件IO演示,字节流与字符流转换,转换流的编码解码
-
java_IO--字节流与字符流
-
Java中字符流与字节流的区别详细介绍
-
java IO(File类、字节流与字符流、字节字符转换流)
-
Java 字节流(OutputStream、InputStream)与字符流(Writer、Reader) 学习 字节流字符流OutputStreamInputStream
-
关于java中I/O流的字节流与字符流的详细介绍
-
阿里Java学习路线:阶段 1:Java语言基础-Java语言高级特性:第16章:字节流与字符流:课时76:Reader字符输入流