# 原创,转载请留言联系

  • 输出流

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. 【BZOJ5288】[HNOI2018]游戏(乱搞?)

    [BZOJ5288][HNOI2018]游戏(乱搞?) 题面 BZOJ 洛谷 题面自己到洛谷上看把 题解 考场上乱搞拿到了\(90\)分,简直不敢相信. 回家把代码再交了一份直接就\(AC\)了??? ...

  2. BZOJ1853:[SCOI2010]幸运数字 & BZOJ2393:Cirno的完美算数教室——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=1853 https://www.lydsy.com/JudgeOnline/problem.php? ...

  3. HDOJ(HDU).2044-2049 递推专题

    HDOJ(HDU).2044-2049 递推专题 点我挑战题目 HDU.2044 题意分析 先考虑递推关系:从1到第n个格子的时候由多少种走法? 如图,当n为下方格子的时候,由于只能向右走,所以有2中 ...

  4. [zhuan]动态链接库中的.symtab和.dynsym

    http://blog.csdn.net/beyond702/article/details/50979340 原文如下: shared library (.so) "Program Lib ...

  5. iOS中产生随机数的方法

    利用arc4random_uniform()产生随机数 Objective-C 中有个arc4random()函数用来生成随机数且不需要种子,但是这个函数生成的随机数范围比较大,需要用取模的算法对随机 ...

  6. HDU 4529 状压dp

    郑厂长系列故事——N骑士问题 Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)To ...

  7. java删除目录下符合条件的文件

    自己做的一个小程序,目的是:删除某个目录下所有的文件大小为0的文件.同理其他的条件也可以,只需修改delFile()方法中的判断条件即可. 下面是代码,有需要的同学可以参考下,如有错误请指出,不胜感激 ...

  8. MyBatis框架的使用及源码分析(十) CacheExecutor,SimpleExecutor,BatchExecutor ,ReuseExecutor

    Executor分成两大类,一类是CacheExecutor,另一类是普通Executor. 普通类又分为: ExecutorType.SIMPLE: 这个执行器类型不做特殊的事情.它为每个语句的执行 ...

  9. MyBatis框架的使用及源码分析(六) MapperRegistry

    我们先Mapper接口的调用方式,见<MyBatis框架中Mapper映射配置的使用及原理解析(一) 配置与使用>的示例: public void findUserById() { Sql ...

  10. CAS 逻辑流程图