# 原创,转载请留言联系

  • 输出流

FileWriter类

常见的构造方法:

FileWriter(String fileName)     根据给定的文件名构造一个 FileWriter 对象。
FileWriter(String fileName, boolean append)       根据给定的文件名以及指示是否附加写入数据的 boolean 值来构造 FileWriter 对象。

String fileName代表的是文件的路径,如果没有这个文件,会自动创建。

常见的方法:

1.write

void write(String str):写一个字符串数据
void write(String str,int index,int len):写一个字符串中的一部分数据
void write(int ch):写一个字符数据,这里写int类型的好处是既可以写char类型的数据,也可以写char对应的int类型的值。'a',97
void write(char[] chs):写一个字符数组数据
void write(char[] chs,int index,int len):写一个字符数组的一部分数据

2.close

object.close()   关闭文件,释放资源

3.flush

object.flush()  刷新缓冲区。流对象还可以继续使用。

注意其和close()的区别,close是先刷新缓冲区,然后通知系统释放资源。流对象不可以再被使用了。

所以说close在释放资源前会刷新一次缓冲区。

  • 输入流

FileReader类

常见的构造方法:

FIleReader(String FileName)    在给定从中读取数据的文件名的情况下创建一个新 FileReader。

常见的方法:

1.read()

read()方法    一次只读一个字符,返回的是对应的编码值,int类型。

示例:

public class FileReaderDemo {
public static void main(String[] args) throws IOException {
FileReader fr = new FileReader("/home/chichung/桌面/test");
int ch = fr.read();
System.out.println(ch);
System.out.println((char)ch);
fr.close()
}

注意,当没有数据可以读时,返回值是int -1。可以根据这个结束条件写一个循环把所有数据读出来。

public class FileReaderDemo {
public static void main(String[] args) throws IOException {
FileReader fr = new FileReader("/home/chichung/桌面/test");
int ch;
while ((ch=fr.read()) != -1){
System.out.print((char)ch);
}
fr.close(); // 记得释放资源
}
}

2.read(char[] cbuf)

当文件很大时,一个一个字符去读取效率太低了。所以一般是多个字符一起读取。read方法可以接收一个字符数组。一般数组的长度定义为1024或整数倍,视内存而定。

示例:

public class FileReaderDemo2 {
public static void main(String[] args) throws IOException {
char[] arr = new char[3]; // 这里只是实验才用的3,具体情况视内存而定
FileReader fr = new FileReader("/home/chichung/桌面/test");
int len;
// len=fr.read(arr) len是实际读到的长度(int),不是数组的长度!
// 当没有新内容可读时,返回值是int -1
while ((len= fr.read(arr)) != -1){
System.out.print(new String(arr,0,len)); // String构造方法直接把字符数组转换为字符串
}
fr.close();
}
}

说了这么多,其实上面两个都用得不多(滑稽.jpg)

用得比较多是BufferedWriter和BufferReader类。

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

  • BufferedWriter类

将文本写入字符输出流,缓冲字符,以提供单个字符,数组和字符串的高效写入。
可以指定缓冲区大小,或者可以接受默认大小。 默认值足够大,可用于大多数用途。

常用构造方法:

BufferedWriter(Writer out)    创建使用默认大小的输出缓冲区的缓冲字符输出流。

示例:

BufferedWriter bw = new BufferedWriter(new FileWriter("/home/chichung/桌面/test.txt));

常用方法:

FileWriter的方法都有。

比较特别的是,BufferedWriter类有newLine()方法。

这个方法十分有用。它是写入一个换行符。

windows的换行符是\r\n,linux的换行符是\n,mac的换行符是\r。

newLine()方法可以根据不同的系统,写入合适的换行符!

  • BufferedReader类

从字符输入流读取文本,缓冲字符,以提供字符,数组和行的高效读取。
可以指定缓冲区大小,或者可以使用默认大小。 默认值足够大,可用于大多数用途。

常见的构造方法:

BufferedReader(Reader in)     创建使用默认大小的输入缓冲区的缓冲字符输入流。

示例:

BufferedReader br = new BufferedReader(new FileReader("/home/chichung/桌面/test"));

常见的方法:

FileReader的方法都有。

比较特别的是,BufferedReader类有readLine()方法。

readLine()方法是一次读一行。需要注意的是,与read()不同,当没有东西可读的是,readLine()返回的是null,read()返回的是-1。

java的IO流之字符流的更多相关文章

  1. Java文件(io)编程——文件字符流的使用

    案例1: 读取一个文件并写入到另一个文件中,char[] 来中转. 首先要在E盘下创建一个文本文档,命名为test.txt,输入一些字符串. public class Demo_5 { public ...

  2. java IO流 之 字符流

    字符是我们能读懂的一些文字和符号,但在计算机中存储的却是我们看不懂的byte 字节,那这就存在关于字符编码解码的问题.所以在学习Io流的字符流前我们先了解些关于编码问题. 一.字符集与字符编码 1.什 ...

  3. JAVA IO 字节流与字符流

    文章出自:听云博客 题主将以三个章节的篇幅来讲解JAVA IO的内容 . 第一节JAVA IO包的框架体系和源码分析,第二节,序列化反序列化和IO的设计模块,第三节异步IO. 本文是第一节.     ...

  4. java io流(字符流) 文件打开、读取文件、关闭文件

    java io流(字符流) 文件打开 读取文件 关闭文件 //打开文件 //读取文件内容 //关闭文件 import java.io.*; public class Index{ public sta ...

  5. Java IO 字节流与字符流 (五)

    Java的IO流分为字符流(Reader,Writer)和字节流(InputStream,OutputStream),字节流顾名思义字节流就是将文件的内容读取到字节数组,然后再输出到另一个文件中.而字 ...

  6. JAVA之IO流(字符流)

    字符流InputStreamReader和OutputStreamWriter是Writer和Read的子类:是字节流通向字符流的桥梁,也就是可以把字节流转化为字符流. InputStreamRead ...

  7. JAVA之旅(二十四)——I/O流,字符流,FileWriter,IOException,文件续写,FileReader,小练习

    JAVA之旅(二十四)--I/O流,字符流,FileWriter,IOException,文件续写,FileReader,小练习 JAVA之旅林林总总也是写了二十多篇了,我们今天终于是接触到了I/O了 ...

  8. io系列之字符流

    java中io流系统庞大,知识点众多,作为小白通过五天的视频书籍学习后,总结了io系列的随笔,以便将来复习查看. 本篇为此系列随笔的第一篇:io系列之字符流. IO流 :对数据的传输流向进行操作,ja ...

  9. JAVA中的字节流与字符流

    字节流与字符流的区别? 字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢? 实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用 ...

  10. IO字 节流/字符流 读取/写入文件

    流是指一连串流动的数据信号,以先进,先出的方式发送和接收的通道 流的分类根据方向分为输入流所有接收,获得,读取的操作都是属于输入流所有的输入流名字都带有input或Reader 输出流所有发送,写的操 ...

随机推荐

  1. 【QQ】前端实现QQ会话功能

    <a href="tencent://message/?uin=客服QQ号码&Menu=yes" target="blank"></a ...

  2. BZOJ4584 & 洛谷3643 & UOJ204:[APIO2016]划艇——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=4584 https://www.luogu.org/problemnew/show/P3643 ht ...

  3. BZOJ4071 & 洛谷3644 & UOJ112:[APIO2015]巴邻旁之桥——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=4071 https://www.luogu.org/problemnew/show/P3644 ht ...

  4. Mysql Fabric实现学习笔记

    Mysql Fabric用来管理mysql服务,提供扩展性和容易使用的系统,管理mysql分片和高可用部署(当前实现了两个特性:高可用和使用数据分片的横向扩展,能单独使用或结合使用这两个特性.). 架 ...

  5. sass的颜色函数

    sass中有些非常实用的颜色处理函数,总结如下 1.颜色加深或变浅 lighten($color,$amount) //颜色变浅 darken($color,$amount) //颜色加深 例如: l ...

  6. 理清一下JavaScript面向对象思路

    借这篇文章理清一下自己的思路,同时也希望能给和我同样一知半解的同学理清一下思路.引发思考来自于我犯的一个错误,错误代码是这样的: 1 var o = { 2     ... 3 } 4 var obj ...

  7. BZOJ:2460[BeiJing2011]元素 (异或基+贪心)

    2460: [BeiJing2011]元素 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 2910  Solved: 1535 题目链接:https: ...

  8. MANIFEST.MF的文件的作用

    在web项目中一个war包下面有一个文件叫:MANIFEST.MF 这个文件的作用是:告诉我们的信息有: Manifest-Version: 1.0Built-By: 张三(由谁创建)Build-Jd ...

  9. 关于jmf不能播放mp3的问题解决

    想写个JAVA的MP3音乐管理器,使用JMF插件,但发现运行时总报一个异常: Unable to handle format: mpeglayer3, 44100.0 Hz, 16-bit, Ster ...

  10. 【设计模式】 模式PK:命令模式VS策略模式

    1.概述 命令模式和策略模式的类图确实很相似,只是命令模式多了一个接收者(Receiver)角色.它们虽然同为行为类模式,但是两者的区别还是很明显的.策略模式的意图是封装算法,它认为“算法”已经是一个 ...