博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java IO之字符流
阅读量:6710 次
发布时间:2019-06-25

本文共 1699 字,大约阅读时间需要 5 分钟。

hot3.png

 
1.         字符流

在程序中一个字符等于两个字节,Java为我们提供了Reader和Writer两个专门操作字符流的类

 

 

 

 

1)        字符输出流:Writer

Writer是一个字符流,它是一个抽象类,所以要使用它,也必须通过其子类来实例化它后才能使用它。

Writer类的常用方法

方法名称

描述

public abstract void close() throws IOException

关闭输出流

public void write(String str) throws IOException

将字符串输出

public void write(char cbuf) throws IOException

将字符数组输出

public abstract void flush() throws IOException

强制性清空缓存

 

 

 

示例1:HelloWorld

向一个文本文件中通过字符输出流写入数据

[java]  
  1. public static void main(String[] args) throws Exception {  
  2.   
  3.    // 声明一个File对象  
  4.   
  5.    File file = new File("hellowolrd.txt");  
  6.   
  7.   
  8.   
  9.    // 声明一个Write对象  
  10.   
  11.    Writer writer = null;  
  12.   
  13.    // 通过FileWriter类来实例化Writer类的对象并以追加的形式写入  
  14.   
  15.    writer = new FileWriter(file, true);  
  16.   
  17.   
  18.   
  19.    // 声明一个要写入的字符串  
  20.   
  21.    String str = "字符串形式写入Helloworld";  
  22.   
  23.    // 写入文本文件中  
  24.   
  25.    writer.write(str);  
  26.   
  27.    // 刷新  
  28.   
  29.    writer.flush();  
  30.   
  31.    // 关闭字符输出流  
  32.   
  33.    writer.close();  
  34.   
  35. }  

 

2)        字符输入流:Reader

Reader本身也是一个抽象类,同样,如果使用它,我们需要通过其子类来实例化它才可以使用它。

Reader类的常用方法

方法名称

描述

public abstract void close() throws IOException

 

public int read() throws IOException

 

public int read(char cbuf) throws IOException

 

 

通过方法我们看到Reader类只提供了一个读入字符的方法

示例2:还是Helloworld

在上面的基础上把文本中的内容读出来,并且显示在控制台上

 

[java]  
  1.     public static void main(String[] args) throws Exception {  
  2.   
  3.        // 声明一个File对象  
  4.   
  5.        File file = new File("hellowolrd.txt");  
  6.   
  7.    
  8.   
  9.        // 声明一个Reader类的对象  
  10.   
  11.        Reader reader = null;  
  12.   
  13.    
  14.   
  15.        // 通过FileReader子类来实例化Reader对象  
  16.   
  17.        reader = new FileReader(file);  
  18.   
  19.    
  20.   
  21.        // 声明一个字符数组  
  22.   
  23.        char[] c = new char[1024];  
  24.   
  25. //     // 将内容输出  
  26.   
  27. //     int len = reader.read(c);  
  28.   
  29.          
  30.   
  31.        //循环方式一个一个读  
  32.   
  33.        int len=0;  
  34.   
  35.        int temp=0;  
  36.   
  37.        while((temp=reader.read())!=-1){  
  38.   
  39.              
  40.   
  41.            c[len]=(char)temp;  
  42.   
  43.        len++;  
  44.   
  45.        }  
  46.   
  47.        // 关闭输入流  
  48.   
  49.        reader.close();  
  50.   
  51.        // 把char数组转换成字符串输出  
  52.   
  53.        System.out.println(new String(c, 0, len));  
  54.   
  55.    
  56.   
  57.     }  

 

2.         字符流与字节流的区别

 

操作字节流操作时本身不会用到缓冲区,是文件本身直接操作,而字节流在操作时就使用到了缓冲区。

 

 

如果我们在操作字符流的时候,不关闭流,我们写入的数据是无法保存的。所以在操作字符流的时候一定要记得关闭流

转载于:https://my.oschina.net/yuanxulong/blog/364587

你可能感兴趣的文章
sublime汉化
查看>>
Netfilter/iptables的一些新进展
查看>>
Linux下使用虚拟网卡的ingress流控(入口流控)
查看>>
关于Netfilter NF_HOOK宏的outdev参数bug
查看>>
VNC配置
查看>>
RIPv2与EIGRP的自动汇总区别
查看>>
python Flask w2ui sidebar json数据加载方法
查看>>
Linux查看日志定位问题
查看>>
双向实时远程同步文件(inotify+rsync与nfs)
查看>>
『MCSE 2008系统管理视频』Unit 14 文件服务器的管理
查看>>
SIM_AT_Command
查看>>
Windows-- ×××安装与配置过程
查看>>
virtualbox安装ghost版本winxp iso
查看>>
rsync生产实战考试题模拟09
查看>>
Session详解
查看>>
我的友情链接
查看>>
基于centOS6.7搭建LAMP(httpd-2.4.18+mysql-5.5.47+php-5.6.16)环境
查看>>
AIX下PVID详解及其修改方法
查看>>
C# Directory和DirectoryInfo类(文件目录操作)
查看>>
OSPF中的五类LSA
查看>>