网站首页 > 精选教程 正文
/**
* 测试文件字符流FileReader/FileWriter
*/
public class TestFileRW {
public static void main(String[] args) {
try (FileReader fr = new FileReader("iostream/testFile.txt");
FileWriter fw = new FileWriter("iostream/testFile2.txt")){
//字符流以字符为单位读写数据
for (int i = fr.read();i!=-1;i = fr.read()){
//.read()返回int在0-65535之间,对应unicode字符集,读完返回-1
fw.write(i);
//.write(int)一次写入16位/2byte二进制数
}
fw.flush();
}catch (Exception e ){
e.printStackTrace();
}
try(FileWriter fw = new FileWriter("iostream/testFile2.txt",true)){
//FileWriter在实例化时会对指定路径的文件进行覆盖,如果没有该文件会新建,如果有会覆盖成新的空文件,而第二个参数boolean append 为true时会在原文件的后面续写内容,不破坏原始内容,如果没有该文件也会新建
fw.write(".write()方法可以直接写入字符串\r\n");
//字符串中换行使用\r\n回车符+换行符完成
fw.flush();
}catch (Exception e ){
e.printStackTrace();
}
try(FileReader fr = new FileReader("iostream/testFile2.txt");
FileWriter fw = new FileWriter("iostream/testFile3.txt")){
char buffer[] = new char[1024];
//使用缓冲减少写入方法调用频率,字符流的缓冲的类型为char[]
//字符流中没有.available()方法估算长度
for (int len = fr.read(buffer);len!=-1;len = fr.read(buffer)){
//.read(char[])返回读取到的字符长度
fw.write(buffer,0,len);
//和字节输出流类似,传入数组、偏移量、长度
}
fw.flush();
}catch (Exception e){
e.printStackTrace();
}
try(FileWriter fw = new FileWriter("iostream/testFile3.txt");
BufferedWriter bw = new BufferedWriter(fw)){
//BufferedWriter字符缓冲流,处理流,对节点流进行包装,提供缓冲
bw.write("write方法没有变化");
bw.write("不使用换行时这句话和上一句在同一行");
bw.newLine();
bw.write("使用newLine方法实现换行");
bw.flush();
}catch (Exception e){
e.printStackTrace();
}
try(FileReader fr = new FileReader("iostream/testFile3.txt");
BufferedReader br = new BufferedReader(fr)){
System.out.println(br.readLine());
//.readLine()方法一次读取一行,一行读完结尾不包含\r\n
}catch (Exception e){
e.printStackTrace();
}
try(BufferedReader br = new BufferedReader(new FileReader("iostream/testFile3.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("iostream/testFile4.txt"))){
int num=1;
for (String line = br.readLine();line!=null;line = br.readLine()){
//当内容读完.readLine()返回空
bw.write(num+".\t"+line);
bw.newLine();
//.readLine()方法读取的字符串不包含\r\n,在写入时需要加.newLine()方法换行
num++;
//行号
}
bw.flush();
}catch (Exception e){
e.printStackTrace();
}
}
}
- 上一篇: 基础教程:Java Character类
- 下一篇: netty系列之:java中的base64编码器
猜你喜欢
- 2024-11-25 初识java—(五十)输出流
- 2024-11-25 Python 打印回车换行
- 2024-11-25 Bash技巧:介绍一个批量复制文件到指定目录的Shell脚本
- 2024-11-25 进阶之路:Java 日志框架全画传(中)
- 2024-11-25 JSON 字符串是如何被解析的?JsonParser了解一下
- 2024-11-25 看了这篇,我确定你已经彻底搞懂Git了
- 2024-11-25 java正则表达式的使用
- 2024-11-25 用 Java 的 IO 流进行读写文件操作
- 2024-11-25 盘点一下Redis中常用的Java客户端,或者咱们手写一个?
- 2024-11-25 字符知识小结(面向Java语言)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)