十八、JavaIO字符流

字符流专门用来操作文本数据的io操作类

字符输出流  

Write类:这是一个抽象类,不能new,需要使用子类的进行创建对象。

1.FileWrilter类

构造方法:

1)FileWrite(File file)给一个File对象构造一个FileWrite对象。

2)FileWrite (File file,boolean append) 给一个File对象构造一个是否可以追加的FileWrite对象。

3)FileWrite(String fileName)给一个String对象构造出来FileWrite对象。

4)FileWrite(String fileName,boolean append)给一个String构造出来的是否可以追加的FileWrite的对象。

例子:

//构造函数

File file = new File("E:"+File.separator + "wxpx" + File.separator + "lianxi" + File.separator + "JavaSE"  + File.separator + "file1.txt");

//1.构造函数  不可追加数据
FileWriter out = new FileWriter(file);

//2.可以追加数据
File file2 = new File("E:"+File.separator + "wxpx" + File.separator + "lianxi" + File.separator + "JavaSE"  + File.separator + "file2.txt");

FileWriter out2 = new FileWriter(file,true);

//3.构造出传入字符串对象的,,不可以追加的对象
FileWriter out3 = new FileWriter("E:"+File.separator + "wxpx" + File.separator + "lianxi" + File.separator + "JavaSE"  + File.separator + "file3.txt");

//4.构造出传入字符串对象的,可以追加的对象
FileWriter out4 = new FileWriter("E:"+File.separator + "wxpx" + File.separator + "lianxi" + File.separator + "JavaSE"  + File.separator + "file4.txt");

实例方法:

返回值

方法体

作用

void

write(char[] cbuf)

写入一个字符数组

void

Write(char[] cbuf,int startindex,int len)

写入字符串的一部分

void

write(int c)

写入一个字符

void

write(String str)

写入一个字符串

void

write(String str ,int indexof ,int len)

写入一部分字符串数据

void

close()

关闭数据流(需要刷新)

void

flush()

刷新流

例子:(构造函数在上方)

//实例方法
char [] arrchar ={'A','B','C','a','b','c'};
//out.write(arrchar);
out.write(arrchar);
out.flush();
out.close();
out2.write("Hello,world");
out3.write(arrchar, 3, 2);
out2.flush();
out2.close();
out3.close();
out4.write('c');
out4.close();

2.BufferedWriter类

BufferedWriter类的构造方法

BufferedWriter(Writer  out)通过字符输出流的对象创建BufferedWriter

例子:

File file = new File("E:"+File.separator + "wxpx" + File.separator + "lianxi" + File.separator + "Java"  + File.separator + "bfwfile.txt");
Writer out = new FileWriter(file);
BufferedWriter bfWriter = new BufferedWriter(out);

BufferedWriter类的实例方法

返回值

方法体

作用

void

write(char[] cbuf)

写入一个字符数组

void

Write(char[] cbuf,int startindex,int len)

写入字符串的一部分

void

write(int c)

写入一个字符

void

write(String str)

写入一个字符串

void

write(String str ,int indexof ,int len)

写入一部分字符串数据

void

close()

关闭数据流(需要刷新)

void

flush()

刷新流

void

newLine()

写一行行分隔符。(写入换行)

例子:

//实例方法
String str1 = "hello,world";
char arrchar[] = {'你','好','世','界'};
bfWriter.write(arrchar);
bfWriter.newLine();
bfWriter.write(str1);
bfWriter.close();
out.close();

3.OutputStreamWriter类

OutputStreamWriter类构造方法

OutputStreamWriter(OutputStream out)将字节输出流转换成字符输出流

字符输入流

Reader类---抽象类---不能new---子类

1.FileReader类

FileReader类的构造方法

FileReader(File file) 给一个File对象构造一个FileReader对象。

FileReader(String fileName) 给一个String对象构造一个FileReader对象。

例子:

//构造方法
File file = new File("E:"+File.separator + "wxpx" + File.separator + "lianxi" + File.separator + "Java"  + File.separator + "file1.txt");
FileReader in = new FileReader(file);

FileReader类的实例方法

返回值

方法体

作用

int

read()

读一个字符。返回值是读取的真实字符数据的整数值,如果已经达到流的末尾,则为-1

int

read(char[] cbuf)

将字符读入数组。返回总字符数,如果到达文件末尾返回-1

void

close()

关闭流并释放与之相关联的任何系统资源。

例子:

//读取一个字符
char f = (char)in.read();
System.out.println(f);
in.close();
//读取到字符数组中去
FileReader in2 = new FileReader("E:"+File.separator + "wxpx" + File.separator + "lianxi" + File.separator + "Java"  + File.separator + "file2.txt");
char f2[] = new  char[(int) file.length()];
in2.read(f2);
in2.close();
for (char c : f2) {
    System.out.println("c = " + c);
}

2.BufferedReader类

BufferedReader类构造方法

BufferedReader(Reader in)通过字符输入流对象创建一个BufferedReader

BufferedReader类实例方法

返回值

方法体

作用

int

read()

读一个字符。返回值是读取的真实字符数据的整数值,如果已经达到流的末尾,则为-1

int

read(char[] cbuf)

将字符读入数组。返回总字符数,如果到达文件末尾返回-1

void

close()

关闭流并释放与之相关联的任何系统资源。

String

readLine()

读一行文字。

例子:

// BufferedReader类

//文件对象
File file = new File("E:"+File.separator + "wxpx" + File.separator + "lianxi" + File.separator + "Java"  + File.separator + "file1.txt");

//构造方法
FileReader out  = new FileReader(file);
BufferedReader in = new BufferedReader(out);

//读取一个字符
// char f = (char) in.read();
// System.out.println(f);
int f;
while ((f = in.read())!= -1) {
    System.out.println((char) f);
}

in.close();
out.close();

//将读取的数据放在字符数组种
File file1 = new File("E:"+File.separator + "wxpx" + File.separator + "lianxi" + File.separator + "Java"  + File.separator + "file2.txt");
char[] chararr = new char[(int) (file1.length())];
FileReader in1 = new FileReader(file1);
BufferedReader bfin = new BufferedReader(in1);
bfin.read(chararr);

for (char c : chararr) {
    System.out.println("c = " + c);
}


bfin.close();
in1.close();

3.InputStreamReader类【字节输入流转成字符输入流】

InputStreamReader类构造方法。

InputStreamReader(InputStream in)字节输入流转成字符输入流。

无奈源于不够强大 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值