java字符输入流与输出流
来源:互联网 发布:韩氏父子 圆号网络 编辑:程序博客网 时间:2024/05/23 01:05
一. Reader(字符输入流)和Writer(字符输出流)
字符流以字符为字节读取文本信息,本质都是二进制
Reader
int read()读取一个字符,返回int值,低16位有效
int read(char[]chs)返回实际读取到的字符量
* java根据读写数据单位不同,将流分为字节流和字符流字节流最小读写单位为一个字节字符流最小读写单位为一个字符
* 字符流虽然是以字符为单位,但是底层实际上还是以字节的形式读写,所以字符流天生就具备将字节转换
* 位字符或字符转换为字节的能力。所以所有的字符流都是高级流,方便我们读写字符数据,无需再关心字符与字节的互相转换了。
//字符流:
public class OSWDemo {
public static void main(String[] args) throws IOException {
FileOutputStreamfos =new FileOutputStream("osw.txt");
// OutputStreamWriter的常用构造方法:
//OutputStreamWriter(OutputStreamWriter out)
// OutputStreamWriter(OutputStreamWriterout,String)
//将给定的字节输出流转换为字符流的同时,指定通过当前字符输出流写出的字符数据以何种字符集转换为字节
OutputStreamWriterosw =new OutputStreamWriter(fos);
osw.write("你好");
osw.write("我很好");
System.out.println("写出完毕!");
osw.close();
}
}
//转换流:
OutputStreamWriter可以处理字节流,以供给BufferedWriter
* java.io.InputStreamReader 字符输入流
* 除了ISR和OSW之外的字符流,大部分都只处理其他字符流,但是低级流都是字节流,
* 这时若希望用一个字符流来处理字节流时就产生冲突
* 所以可以通过创建ISR或OSW来处理字节流,而ISR和OSW本身是字符流,所以可以使得其他字符流得力处理该流
* ISR和OSW相当于是联系字节流与字符流的纽带,类似于转换器的效果。
public class ISRDemo {
public static void main(String[] args) throws IOException {
FileInputStreamfis =new FileInputStream("osw.txt");
InputStreamReaderisr =new InputStreamReader(fis);
BufferedReaderbr =new BufferedReader(isr);
* int read() 一次读取一个夫妇,返回-1读到末尾
intd = -1;
char[]c = newchar[10];
while ((d =br.read(c)) != -1) {
System.out.print(String.valueOf(c, 0,d));
}
System.out.println("\n写出完毕");
br.close();
}
}
* 缓冲字符流内部维护缓冲区(字符数组),读写字符效率高并且可以建行读写字符串 BufferedWriter ,BufferedReader
*
*java.io.PrintWriter 常用的缓冲字符输出流,内不自动处理BufferedWriter来完成缓冲操作,并且
* PrintWriter自由自动行刷新功能,会自动创建BufferedWriter
public class PWDemo1 {
public static void main(String[] args) throws IOException {
/**
* PrintWriter提供了丰富的构造方法其中提供了可以针对文件写出操作的构造方法 PrintWriter(Stringpath)
* PrintWriter(File file)
*/
PrintWriterpw = new PrintWriter("pw.txt","true");
pw.print("锄禾日党务");
pw.print("汗滴禾下土");
pw.print("谁知盘中餐");
pw.print("丽丽姐辛苦");
System.out.println("写出完毕!");
pw.close();
}
}
* PW处理其他流
public class PWDemo2 {
public static void main(String[] args) throws IOException {
* 向文件pw1.txt中写出内容
FileOutputStreamfos =new FileOutputStream("pw.txt");
* PrintWriter构造方法传入字节流的话,不能指定字符集
* 若希望指定字符集,需要在中间使用 OutputStreamWriter
OutputStreamWriterosw =new OutputStreamWriter(fos,"utf-8");
PrintWriterpw = new PrintWriter(osw);
pw.println("啦啦啦");
pw.println("哈哈哈");
System.out.println("写出完毕!");
pw.close();
}
}
* 自动行刷新当PW处理的是一个流时,构造方法允许传入第二个参数,该参数是一个boolean值
* 当为true的时候,则具有自动刷新功能,即:每当使用println方法写出一行字符串时会自动flush
public class PWDemo3 {
public static void main(String[] args) throws IOException {
* 记事本功能
PrintWriterpw = newPrintWriter(new OutputStreamWriter(new FileOutputStream("note.txt")),true);
Scannersc =new Scanner(System.in);
System.out.println("请开始输入内容");
while (true) {
Stringline =sc.nextLine();
if ("exit".equals(line)) {
System.out.println("再见!");
break;
}
* 具有自动刷新的pw在使用println方法时会自动flush
pw.println(line);
}
pw.close();
}
}
* java.io.BufferedReader 缓冲字符输入流,特点:按行读取字符串
public class BRDemo {
public static void main(String[] args) throws IOException {
BufferedReaderbr =new BufferedReader(new InputStreamReader(new FileInputStream(
"." + File.separator +"src" + File.separator +"day08" + File.separator +"BRDemo.java")));
* String readLine() 连续读取若干字符,直到读取换行符为止,将换行符之前的所有字符以一个字符串返回若该方法返回null,
* 表示返回到末尾
Stringline = null;
while ((line =br.readLine()) != null) {
System.out.println(line);
}
br.close();
}
}
- java字符输入流与输出流
- 输入字符流与输出字符流
- java基础<IO输出与输入>--->IO流<字符流>
- Java字符输入与输出
- java 字符输入流,字符输出流,字符缓冲流
- 字符输入/输出流
- Java中 IO中的字符输入流与字符输出流
- java输入与输出流
- 关于JAVA字节输入流与输出流以及与字符区别
- java学习笔记IO输入与输出——IO字符流(3)
- java笔记→IO流中字节,字符的输入与输出(文件)
- java读取文件——字符流输入和输出
- Java输入流与输出流
- JAVA---IO流的输入与输出
- io流的输入,字节流inputStream,outputStream的输入与输出,字符流的输入与输出 FileInputStream,FileOutputStream
- 输入与输出,流!
- JAVA输入\输出流
- Java输入/输出流
- Po学校——考试一
- leetcode 382 Linked List Random Node C++
- Netty解决粘包问题(2) 定长填充
- 详细“企业库”编写流程
- MkDocs项目文档生成器(一)
- java字符输入流与输出流
- 深度分析如何在Hadoop中控制Map的数量
- 01背包 完全背包 多重背包
- android中的表格,固定第一行和第一列,使用fragment显示
- 斐波那契数列
- Android内存泄漏分析及调试
- NVIDIA Jetson TK1学习与开发——简介(针对嵌入式系统应用释放 GPU 的潜能)
- Oracle:PL/SQL--流程控制(一)——条件结构:if-then、if-then-else、if-then-elsif
- 【Programming In Lua (2E) 笔记】5:使用C++为Lua编写扩展库(macOS上两种动态库格式的坑)