# 原创,转载请留言联系

  • 输出流

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. Android 内核--Binder架构分析

    一.Binder架构 在Android中,Binder用于完成进程间通信(IPC),即把多个进程关联在一起.比如,普通应用程序可以调用音乐播放服务提供的播放.暂停.停止等功能.Binder工作在Lin ...

  2. BZOJ4567:[SCOI2016]背单词——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=4567 Lweb 面对如山的英语单词,陷入了深深的沉思,“我怎么样才能快点学完,然后去玩三国杀呢?” ...

  3. HDOJ(HDU).1003 Max Sum (DP)

    HDOJ(HDU).1003 Max Sum (DP) 点我挑战题目 算法学习-–动态规划初探 题意分析 给出一段数字序列,求出最大连续子段和.典型的动态规划问题. 用数组a表示存储的数字序列,sum ...

  4. linux 小技巧

      http://blog.csdn.net/xianjie0318/article/details/75712990 1.按内存从大到小排列进程:  ps -eo "%C : %p : % ...

  5. ACE反应器(Reactor)模式(3)

    转载于:http://www.cnblogs.com/TianFang/archive/2006/12/18/595938.html 在服务器端使用Reactor框架 使用Reactor框架的服务器端 ...

  6. dns随笔(部分转载)

    1.allow-notify allow-notify 定义了一个匹配列表并且只应用于从dns区域(slave zone),比如,这个列表是一个ip列表,它 2. 触发同步的过程 http://www ...

  7. Leetcode 703. 数据流中的第K大元素

    1.题目要求 设计一个找到数据流中第K大元素的类(class).注意是排序后的第K大元素,不是第K个不同的元素. 你的 KthLargest 类需要一个同时接收整数 k 和整数数组nums 的构造器, ...

  8. c# string 转 GUID

    提供两种方法 1.try...catch... /* * string TO guid */ private static bool ToGuid(string str) { Guid gv = ne ...

  9. [Coding Practice] Maximum number of zeros in NxN matrix

    Question: Input is a NxN matrix which contains only 0′s and 1′s. The condition is no 1 will occur in ...

  10. maven中jar包的maven地址查询

    在网站 https://mvnrepository.com/ 中查找.