# 原创,转载请留言联系

  • 输出流

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. 在Windows*上编译Tensorflow教程

    背景介绍 最简单的 Tensorflow 的安装方法是在 pip 一键式安装官方预编译好的包 pip install tensorflow 通常这种预编译的包的编译参数选择是为了最大兼容性而不是为了最 ...

  2. POJ 2728 Desert King | 01分数规划

    题目: http://poj.org/problem?id=2728 题解: 二分比率,然后每条边边权变成w-mid*dis,用prim跑最小生成树就行 #include<cstdio> ...

  3. hdu5652:India and China Origins(并查集)

    倒序操作用并查集判断是否连通,新技能get√(其实以前就会了 这题细节很多...搞得整个程序都是调试输出,几度看不下去想要重写 并查集到现在大概掌握了两个基本用途:判断是否连通 / 路径压缩(上一篇b ...

  4. 添加网站标题logo

    如何在标题栏title前添加网站logo? 第一种方法:据说在网站根目录下放着我们的ico型logo,命名为favicon.ico,浏览器会自动去找到并显示.试了试,在firefox23和ie8下都没 ...

  5. 【初级算法】2.买卖股票的最佳时机 II

    题目: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你可以尽可能地完成更多的交易(多次买卖一支股票). 注意:你不能同时参与多笔交易(你必 ...

  6. Linux环境下用Weblogic发布项目【一】 -- 安装Weblogic

     一.Weblogic安装系统环境: 1.前提条件: a.在笔记本[Windows7]上安装远程连接Linux软件:F-Secure SSH File Transfer Trial[简写为:FSSH] ...

  7. node.js 与java 的主要的区别是什么

    node.js 与java都是服务器语言,但是两者存在很大区别:(1)Node.js比Java更快 :node.js开发快,运行的效率也算比较高,但是如果项目大了就容易乱,而且javascript不是 ...

  8. hdu4109 topsort

    Problem Description Ali has taken the Computer Organization and Architecture course this term. He le ...

  9. POJ3164:Command Network(有向图的最小生成树)

    Command Network Time Limit: 1000MS   Memory Limit: 131072K Total Submissions: 20766   Accepted: 5920 ...

  10. ubuntu切割mp3文件

    ffmpeg -i InputFile -vn -acodec copy -ss 00:00:00 -t 00:01:32 OutPutFile