IO-字符流-FileReader

FileReader 读数据

构造方法:

FileReader(String fileName) 传递要读取的文件名称

成员方法:

int read() 读取单个字符并返回

int read(char[] cbuf) 一次读取一个字符数组的数据,返回的是实际读取字符的个数.

输入流读文件的一般步骤:

1.创建输入流对象

2.调用输入流对象的对数据方法

3.释放资源

举例:打印文件中的内容到公屏上,一次读取一个字符

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class DemoFileReader {
public static void main(String[] args) throws IOException {
// 创建输入流对象
FileReader fr = new FileReader("a.txt");
int ch;
// 调用输入流方法读取数据的方法
/*
* ch != -1 ch=fr.read(); 故:(ch = fr.read()) != -1
*/
//
while ((ch = fr.read()) != -1) {
System.out.println((char) ch);
}
// 释放资源
fr.close();
}
}

注意: a.txt必须存在,如果不存在会报系统找不到文件异常

2.上个范例是把文本内容读取出来打印到公屏上,如果是写入到其他文件,是不是就变成复制了呢

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class DemoCopyFile {
public static void main(String[] args) throws IOException {
//创建输入流对象
FileReader fr = new FileReader("a.txt");
//创建输出流对象
FileWriter fw = new FileWriter("Copya.txt");
int ch;
while ((ch = fr.read()) != -1) {
fw.write(ch);
}
//释放资源
fw.close();
fr.close();
}
}

上面的例子是一次读写一个字符复制文本文件,效率比较低.接下来我们看看 成员方法中一次一个字符数组的情况.

public class DemoCopyFile {
public static void main(String[] args) throws IOException {
//创建输入流对象
FileReader fr = new FileReader("a.txt");
//调用输入流对象读取数据的方法
char[] chs = new char[1024];
int len;
/*while一共做了三件事
* 1.fr.read(chs)将数据读取到数组中
* 2.len=fr.read(chs) 把读取到的有效个数复制给len
* 3.len != -1  判断读取的有效个数是否为-1
*
*/
while((len = fr.read(chs))!= -1){
System.out.println(new String(chs,0,len));
}
fr.close();
}
}

在这里什么时候用到字符流呢,一般情况下能够使用系统记事本打开并阅读里面的内容的,我们采用字符流,

时间: 2024-10-21 21:58:45

IO-字符流-FileReader的相关文章

【Java】IO流--文件字符流--FileReader、FileWriter

FileReader 作用:用于读取字符流 构造方法: FileReader(File file) 创建一个新的 FileReader ,给出 File读取. FileReader(String fileName) 创建一个新的 FileReader ,给定要读取的文件的名称. 常用方法: 1)int read();2)int read(char[] cbuf)3)int read(char[] cbuf,int off,int len);4) int available();5)close()

java学习之IO字符流

1 package com.io; 2 3 import java.io.*; 4 /** 5 * 文件字符流的读取 6 * @author ganhang 7 * 8 */ 9 public class FileReaderDemo { 10 public static void read(){ 11 File file =new File("1.txt"); 12 try { 13 FileReader fr=new FileReader(file); 14 StringBuffe

Java IO字符流与字节流

一.基本概念 流:从一端流向另一端,从源头到目的地. 始终与程序为中心,都是程序与文件|数组|网络连接|数据库进行操作. 二.IO流分类 1.流向: 输入流和输出流 2.数据: 字节流:二进制,可以处理文本文件,视频,音频等 . 字符流:文本文件,只能处理纯文本,全款为可见字符(.txt..html). 3.功能: 节点:包裹源头 处理:增强功能,提高性能. 三.字节流与字符流 1.字节流 输入流:InputStream int read(byte[] b) int read(byte[] b,

IO(字符流)

    1. 由于Java采用16位的Unicode字符,因此需要基于字符的输入/输出操作.从Java1.1版开始,加入了专门处理字符流的抽象类Reader和Writer,前者用于处理输入, 后者用于处理输出. 2. Java程序语言使用Unicode来表示字符串和字符,Unicode使用两个字节来表示一个字符,即一个字符占16位 3. 字节流的编码规范与具体的平台有关,可以在构造流对象时指定规范,也可以使用当前平台的缺省规范 InputStreamReader和OutputStreamWrit

JAVA学习笔记(三十二)- 字符流 FileReader & FileWriter

标题 import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream;

IO字符流之读写缓冲区(BufferedWriter、BufferedReader)

缓冲区是为了提高效率所使用的,在使用缓冲区之前必须先明确流对象.就如同拿杯子接水一样,必须先知道这个杯子放在哪里接水 BufferedWriterDemo(输入字符流缓冲区演示): import java.io.*; /* 缓冲区的出现是为了提高流的操作效率而出现的. 所以在创建缓冲区之前,必须要先有流对象. 该缓冲区对象中提供了一个跨平台的换行符. newLine(); */ class BufferedWriterDemo { public static void main(String[]

java之IO字符流

1.转换流的引入 在项目中新建了一个a.txt的文件,内容是 hello中国.我现在用字节输入流来读取并输出到控制台.当然复制文件是没有问题的啦.编码是utf-8. package cn; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; public class FileInputStreamDemo1 { public static void main(String[

黑马程序员——21,字符流FileReader,FileWriter,BufferedWriter,BufferedReader,装饰设计模式,LineNumberReader

------<ahref="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- /* 字符流的缓冲区技术: 对于一些大文件,如果读取一个字符才写一个字符,读写操作过于频繁. 为了解决这个问题,引入了缓冲区技术. 缓冲区技术是在流的基础上(必须要先有流)增强了流对于数据的操作效率. 就如同在水龙头上拿水喝,原本是一滴一滴

java - io字符流

1.字符流是什么 字符流是可以直接读写字符的io流 字符流读取字符,就是要先读取到字节数据,然后转为字符,如果要写出字符,需要把字符转为字节再写出 2.FileReader FileReader类的read(),可以按照字符大小读数 读取的是单个字符,返回的是int 读取字符,如果已到达流的末尾,则返回-1 3.FileWrite 写出字符 拷贝: 什么时候使用字符流: 字符流也可以拷贝文本文件,但不推荐使用,因为读取时会把字节转为字符,写出时还要把字符转回字节 程序需要读取一段文本,或者需要写

Java: IO 字符流

FileInputStream和FileOutputStream分别是InputStream和OutputStream的子类,都是字节流.下面例子中有三个方法可以读写字节流: 1.一个一个的 2.一组一组的,可以自定义字节数组的长度 3.使用available方法,可以返回目标文件的长度从而利用该特性建立一个刚刚好长度的字节数组.但该方法有使用风险,例如目标文件过大,一个电影或者一个大数据文件,则会导致超过虚拟机内存的大小,从而出现错误.所以使用该方法要评估风险,如果可以确定目标是小文件,则可以