OutputStreamWriter介绍&代码实现和InputStreamReader介绍&代码实现
OutputStreamWriter介绍&代码实现
java.io.OutputStreamWriter extends Writer
OutputStreamWriter:是字符的桥梁流以字节流:向其写入的字符编码成使用指定的字节charset(编码:把能看懂的变成看不懂的)
继承自父类的共性成员方法:
Writer |
append(char c)
将指定的字符附加到此作者。
|
Writer |
append(CharSequence csq)
将指定的字符序列附加到此作者。
|
Writer |
append(CharSequence csq, int start, int end)
将指定字符序列的子序列附加到此作者。
|
abstract void |
close()
关闭流,先刷新。
|
abstract void |
flush()
刷新流。
|
void |
write(char[] cbuf)
写入一个字符数组。
|
abstract void |
write(char[] cbuf, int off, int len)
写入字符数组的一部分。
|
void |
write(int c)
写一个字符
|
void |
write(String str)
写一个字符串
|
void |
write(String str, int off, int len)
写一个字符串的一部分。
|
构造方法:
OutputStreamWriter(OutputStream out)
创建一个使用默认字符编码的OutputStreamWriter。
|
|
|
OutputStreamWriter(OutputStream out, String charsetName)
创建一个使用命名字符集的OutputStreamWriter。
|
使用步骤:
1.创建OutputStreamWriter对象,构造方法中传递字节输出流和指定的编码表名称
2.创建OutputStreamWriter对象中的方法write,把字符转为字节存储缓冲区中(编码)
3.使用OutputStreamWriter对象中的方法flush,把内存缓冲区中的字节刷新到文件中(使用字节流写字节的过程)
4.释放资源
UTF-8代码演示:
public static void main(String[] args) throws IOException { write_utf_8(); }/* 使用转换流OutputStreamWriter写UTF-8格式文件 */ private static void write_utf_8() throws IOException { OutputStreamWriter outputStreamWriter = new OutputStreamWriter(new FileOutputStream("utf-8.txt"), "utf-8");//转换流编码 outputStreamWriter.write("你好");//写入资源 outputStreamWriter.flush();//刷新 outputStreamWriter.close();//关闭资源 }
GBK代码演示:
public static void main(String[] args) throws IOException { write_gbk(); } /* 使用转换流OutputStreamWriter写GBK格式文件 */ private static void write_gbk() throws IOException { OutputStreamWriter gbk = new OutputStreamWriter(new FileOutputStream("gbk.txt"), "GBK"); gbk.write("你好吧"); gbk.flush(); gbk.close(); }
转换输出流,可以指定编码表写你要想写的编码表名称
InputStreamReader介绍&代码实现
java.io.InputStreamReader extends Reader
InputStreamReader :是从字节流到字符流的桥:它读取字节,并使用指定的charset
将其解码为字符(解码:把看不懂的变成能看懂的)
继承父类的成员方法:
abstract void |
close()
关闭流并释放与之相关联的任何系统资源。
|
void |
mark(int readAheadLimit)
标记流中的当前位置。
|
boolean |
markSupported()
告诉这个流是否支持mark()操作。
|
int |
read()
读一个字符
|
int |
read(char[] cbuf)
将字符读入数组。
|
abstract int |
read(char[] cbuf, int off, int len)
将字符读入数组的一部分。
|
int |
read(CharBuffer target)
尝试将字符读入指定的字符缓冲区。
|
boolean |
ready()
告诉这个流是否准备好被读取。
|
void |
reset()
重置流。
|
long |
skip(long n)
跳过字符
|
构造方法:
InputStreamReader(InputStream in)
创建一个使用默认字符集的InputStreamReader。
|
|
|
InputStreamReader(InputStream in, String charsetName)
创建一个使用命名字符集的InputStreamReader。
|
使用步骤:
1.创建InputStreamReader对象,构造方法中传递字节输入流和指定的编码表名称
2.使用InputStreamReader对象中的方法read读取文件
3.释放资源
注意事项:
构造方法中指定的编码表名称要和文件的编码相同,否则会发送乱码
UTF-8代码演示:
public static void main(String[] args) throws IOException { read_utf_8(); }/* 使用InputStreamReader读取UTF-8格式的文件 */ private static void read_utf_8() throws IOException { InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream("utf-8.txt"), "UTF-8"); int len; while ((len=inputStreamReader.read())!=-1){ System.out.println((char) len); } inputStreamReader.close(); }
GBK代码演示:
public static void main(String[] args) throws IOException { read_gbk(); } private static void read_gbk() throws IOException { InputStreamReader gbk = new InputStreamReader(new FileInputStream("gbk.txt"), "GBK"); int len; while ((len=gbk.read())!=-1){ System.out.println((char) len); } gbk.close(); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix