java字符流的父类_字符流的父类

reader 字符输入流

public int read(){}

public int read(char[] c){}

public int read(char[] b, int off, int len){}

Writer 字符输出流

public void write(int n){}

public void write(String str){}

public void write(char[] c){}

传统读取文件的方式

// 传统字节流读取

psvm(String[] args){

// 1. 创建FileInputStream对象

FileInputSteam fis = new FileInputStream("路径");

// 2. 读取

int data = 0;

while((data = fis.read()) != -1){

sout((char)data);

}

// 3. 关闭

fis.close();

}

以上这种方式,如果文件中的内容是英文的,那是没有什么问题的,因为一个英文字母一个字节,但是当文件中的内容是中文的话,一个汉字是三个字节,这个时候,再读取文件中的内容是会出现乱码的。

FileReader

小案例;

package com.iopractise;

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.IOException;

public class Demo10 {

public static void main(String[] args) throws IOException {

// 1. 创建FileReader 文件字符输入流

FileReader fr = new FileReader("d:\\aaa.txt");

// 2. 读取

// 2.1 单个字符读取

int data = 0;

while ((data = fr.read()) != -1) {

System.out.println(((char) data));// 读取一个字符

}

//2.2 字符缓冲区读取

char[] buf = new char[2];

int count = 0;

while ((count = fr.read(buf)) != -1) {

System.out.println(new String(buf, 0, count));

}

// 3. 关闭

fr.close();

}

}

运行结果;

或者

中国

加油

当然如果文件中,既有中文又有英文也是没有问题的,都能够进行正常读取。

h

e

l

l

o

w

o

r

l

D

FileWriter

小案例:

package com.iopractise;

import java.io.FileWriter;

import java.io.IOException;

public class Demo11 {

public static void main(String[] args) throws IOException {

// 1. 创建FileWriter对象

FileWriter fw = new FileWriter("d:\\ccc.txt");

// 2. 写入

for (int i = 0; i < 10; i++) {

fw.write("中国加油!");

fw.flush();

}

// 3. 关闭

fw.close();

System.out.println("执行完毕");

}

}

运行结果:

我们打开文件会看到我们写入的内容。

中国加油!中国加油!中国加油!中国加油!中国加油!中国加油!中国加油!中国加油!中国加油!中国加油!

使用FileReader和FileWriter来实现文件的复制操作

package com.iopractise;

import java.io.FileReader;

import java.io.FileWriter;

/**

* 不能复制图片或二进制文件,使用字节流可以复制任意文件

* 复制图片、音频等非字符文件只能使用字节流,因为在电脑中存储的一切文件的底层都是一个个字节。

*/

public class Demo12 {

public static void main(String[] args) throws Exception{

// 1. 创建

FileReader fr = new FileReader("d:\\ccc.txt");

FileWriter fw = new FileWriter("d:\\ccc2.txt");

// 2. 读写

int data = 0;

while((data = fr.read()) != -1){

fw.write(data);

fw.flush();

}

// 3. 关闭

fw.close();

fr.close();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值