java中的 FileWriter类 和 FileReader类的一些基本用法

java中的 FileWriter类 和 FileReader类的一些基本用法

1,FileWriter类(字符输出流类)

构造方法:FileWriter fw = new FileWriter(String fileName);//创建字符输出流类对象和已存在的文件相关联。文件不存在的话,并创建。

                                             如:FileWriter fw = new FileWriter("C:\\demo.txt");

                  FileWriter fw = new FileWriter(String fileName,boolean append);//创建字符输出流类对象和已存在的文件相关联,并设置该该流对文件的操作是否为续写。

                                             如:FileWriter fw = new FileWriter("C:\\demo.txt",ture); //表示在fw对文件再次写入时,会在该文件的结尾续写,并不会覆盖掉。

主要方法: void write(String str)   //写入字符串。当执行完此方法后,字符数据还并没有写入到目的文件中去。此时字符数据会保存在缓冲区中。

                                                        此时在使用刷新方法就可以使数据保存到目的文件中去。

                  viod flush()                //刷新该流中的缓冲。将缓冲区中的字符数据保存到目的文件中去。

                  viod close()               //关闭此流。在关闭前会先刷新此流的缓冲区。在关闭后,再写入或者刷新的话,会抛IOException异常。

package filewriter;

import java.io.FileWriter;
import java.io.IOException;

public class Filewriter {

	private static final String LINE_SEPARATOR = System.getProperty("line.separator");

	/**
	 * 
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException {
		/**
		 * 创建一个可以往文件中写入字符数据的字符流输出流对象
		 * 创建时必须明确文件的目的地
		 * 如果文件不存在,这回自动创建。如果文件存在,则会覆盖。
		 * 当路径错误时会抛异常
		 * 
		 * 当在创建时加入true参数,回实现对文件的续写。
		 */
		FileWriter fw = new FileWriter("C:\\demo1.txt",false);
		/**
		 * 调用该对象的write方法,向文件写入字符。
		 * 
		 * 其实写入到了临时存储缓冲区中
		 */
//		fw.write("hello \r\nworld!");//windows中的换行为\r\n    unix下为\r。
		fw.write("aello"+LINE_SEPARATOR+"world!");
		fw.write("hahaha");
		/**
		 * 进行刷新,将字符写到目的地中。
		 */
//		fw.flush();
		/**
		 * 关闭流,关闭资源。在关闭前会调用flush方法 刷新缓冲区。关闭后在写的话,会抛IOException
		 */
		fw.close();
		

	}

}

关于FileWriter的的异常处理。

package filewriter;

import java.io.FileWriter;
import java.io.IOException;

public class IOExceptionDemo {

	private static final String LINE_SEPARATOR = System.getProperty("line.separator");
	public static void main(String[] args) {

		FileWriter fw = null;
		try {
			fw = new FileWriter("k:\\Demo.txt", true);
			fw.write("hello" + LINE_SEPARATOR + "world!");
		} catch (Exception e) {
			System.out.println(e.toString());
		} finally {
			if (fw != null)
				try {
					fw.close();
				} catch (IOException e) {
					throw new RuntimeException("关闭失败!");
				}
		}
	}
}

2,FileReader类

1,构造方法

FileReader fr = new FileReader(String fileName);//使用带有指定文件的String参数的构造方法。创建该输入流对象。并关联源文件。

2,主要方法

int read(); // 读取单个字符。返回作为整数读取的字符,如果已达到流末尾,则返回 -1。

int read(char []cbuf);//将字符读入数组。返回读取的字符数。如果已经到达尾部,则返回-1。

void close();//关闭此流对象。释放与之关联的所有资源。

package Filereader;

import java.io.FileReader;
import java.io.IOException;

public class FileReaderDemo {

	public static void main(String[] args) throws IOException {
		/**
		 * 创建读取字符数据的流对象。
		 * 读取路径不正确时会抛 IOException
		 * 用以个读取流对象关联一个已存在文件。
		 */
		FileReader fr = new FileReader("demo.txt");
		/**
		 * 用Reader中的read方法读取字符。
		 */
		/*int ch = fr.read();
		System.out.print((char)ch);
		int ch1 = fr.read();
		System.out.print((char)ch1);
		int ch2 = fr.read();
		System.out.print((char)ch2);*/
		int ch = 0;
		while((ch = fr.read()) != -1){
			System.out.print((char)ch);
		}
		fr.close();
		}
}


 

用FileReader  和 FileWriter 写的复制文本文件的小程序。

package IOtest;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class TxtCopy {

	/**
	 * 将C:\\的myHeart.txt copy 到 D:\\下
	 * 
	 * 首先创建Reader读取数据数据的 读取流对象。
	 * 
	 * @throws FileNotFoundException
	 */
	public static void main(String[] args) {
		FileReader fr = null;
		FileWriter fw = null;
		try {
			fr = new FileReader("C:\\my.txt");
			fw = new FileWriter("D:\\you.txt");
			//读一个字符,写一个字符方法
//			int ch = 0;
//
//			while ((ch = fr.read()) != -1) {
//				fw.write(ch);
//			}
			char []buf = new char[1024];
			int len = 0;
			//读一个数组大小,写一个数组大小方法。
			while((len = fr.read(buf)) != -1){
				fw.write(buf, 0, len);				
			}
			
 		} catch (Exception e) {
			System.out.println(e.toString());
		} finally {
			if (fr != null)
				try {
					fr.close();
				} catch (Exception e2) {
					throw new RuntimeException("关闭失败!");
				}
			if (fw != null)
				try {
					fw.close();
				} catch (IOException e) {
					throw new RuntimeException("关闭失败!");
				}
		}
	}
}


 

  • 28
    点赞
  • 105
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
目 录 第一章 JAVA入门 10 计算机语言发展史 10 机器语言 10 汇编语言 10 高级语言 10 其他高级语言 11 JAVA发展简史 12 JAVA为什么能够流行? 13 JAVA各版本的含义 13 JAVA技术体系架构 14 JAVA的特性和优势 14 JAVA应用程序的运行机制 15 JVM(JAVA VIRTUAL MACHINE) 16 Java运行时环境JRE(Java Runtime Environment) 17 JAVA语言应用范围 18 第一个JAVA程序 18 JAVA开发环境搭建 18 一个典型的JAVA程序的编写和运行过程 19 第一个程序常见错误 20 第一个JAVA程序的总结和提升 20 常用Java开发工具 20 常用dos命令 21 本章笔试作业 21 本章上机操作 21 第二章(1) 编程的基本概念 22 注释 22 标识符 22 关键字/保留字 23 变量(variable) 24 常量(Constant) 25 命名规则(规范) 25 基本数据型(primitive data type) 26 整型变量 26 浮点型 27 字符型(2个字节): 28 boolean型 29 运算符(operator) 29 二元运算符 29 一元运算符 30 布尔逻辑表达符 30 位运算符 30 扩展运算符 31 字符串连接符 31 三目条件运算符 31 运算符优先级的问题 31 自动型转换 32 基本型转化时常见错误和问题 33 方法 33 简单的键盘输入和输出 33 本章思考作业 34 上机操作 34 第二章(2) 控制语句 35 顺序结构 35 选择结构 35 if单选择结构 35 if-else双选择结构 35 If-elseif-else多选择结构 36 switch多选择结构 37 循环结构 39 While和dowhile的区别 41 For循环 42 break语句和continue语句 47 语句块 48 递归结构 49 本章作业 50 本章上机操作 51 第三章 JAVA面向对象程序开发 52 编程语言发展史 52 和对象是如何产生发展的?如何进化的? 52 面向对象思想初步(OOP初步Object Oriented Programming) 53 面向对象编程的语言的三大特征简介 56 对象和的概念 56 和对象初步 57 测试的定义方式 57 简单的学生编写示例 58 内存分析 59 属性(field,或者叫成员变量) 59 引用型 60 的方法 60 对象的创建和使用 60 构造器(或者叫做构造方法,constructor) 60 垃圾回收机制(Garbage Collection) 63 方法的重载(overload),构造方法的重载 63 this关键字 65 static 关键字 66 静态初始化块(经常用来初始化,加载信息时执行!) 67 package 68 JDK的主要包 68 import 68 eclipse的使用 69 继承(extend, inheritance) 70 为什么需要继承?继承的作用? 70 继承介绍 70 如何实现继承? 70 继承使用要点 71 Object 72 toString方法 72 equals方法 73 super关键字 74 方法的重写(override) 74 隐藏/封装(encapsulation) 75 为什么需要封装?封装的作用和含义? 75 使用访问控制符,实现封装 76 封装的使用细节 76 多态(polymorphism) 76 为什么需要多态? 76 如何实现多态? 77 方法绑定(method binding) 77 静态绑定 77 动态绑定 77 多态的使用要点 78 对象的转型(casting) 79 final 81 抽象 82 抽象的使用要点 83 接口 83 为什么需要接口? 84 如何定义接口? 84 接口的本质探讨 84 接口使用要点 85 接口的多继承 86 面向接口编程 87 OOP更多应用 87 组合 87 内部(innerclasses) 88 字符串(java.lang.String)的使用 90 字符串相等的判断 92 思考作业 93 上机作业 94 第四章 异常机制 95 导引问题 95 异常(Exception)的概念 96 异常分 96 Error 97 Error和Exception的区别 97 Exception 97 异常的处理办法之一,捕获异常 99 try块 99 catch 99 finally 100 try, catch,finally ,return 执行顺序 100 异常的处理办法之二,声明异常:
/** * 一、BufferedReader public class BufferedReader extends Reader * 从字符输入流读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。 可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值足够大。 * 通常,Reader 所作的每个读取请求都会导致对底层字符或字节流进行相应的读取请求。因此,建议用 BufferedReader包装所有其 read() * 操作可能开销很高的 Reader(如 FileReader和 InputStreamReader)。 * BufferedReader流能够读取文本行,通过向BufferedReader传递一个Reader对象 * ,来创建一个BufferedReader对象,之所以这样做是因为FileReader没有提供读取文本行的功能. * * 二、InputStreamReader * * InputStreamReader 将字节流转换为字符流。是字节流通向字符流的桥梁。如果不指定字符集编码,该解码过程将使用平台默认的字符编码,如:GBK。 * * 构造方法: * * InputStreamReader isr = new InputStreamReader(InputStream * in);//构造一个默认编码集的InputStreamReader * * InputStreamReader isr = new InputStreamReader(InputStream in,String * charsetName);//构造一个指定编码集的InputStreamReader。 * * 参数 in对象通过 InputStream in = System.in;获得。//读取键盘上的数据。 * * 或者 InputStream in = new FileInputStream(String fileName);//读取文件的数据。可以看出 * FileInputStream 为InputStream的子。 * * 主要方法:int read();//读取单个字符。 int read(char []cbuf);//将读取到的字符存到数组。返回读取的字符数。 * * 三、FileWriter(少量文字) 和 BufferedWriter(大量文字)实现简单文件写操作 * @author hulk */
### 回答1: `FileWriter` 并没有 `read()` 方法,它是用于写入文件的。如果你想读取文件,应该使用 `FileReader` ,它有 `read()` 方法用于读取文件的字符。 当 `read()` 方法返回 `-1` 时,表示已经到达了文件的末尾,没有更多的字符可以读取了。你可以在读取文件之前先检查一下文件是否存在、是否可读,以及文件是否为空。在读取文件时,建议使用 `BufferedReader` 进行缓冲读取,可以提高读取效率,并且可以一次读取多个字符。下面是一个示例代码: ```java try { File file = new File("example.txt"); if (!file.exists() || !file.canRead()) { System.out.println("File does not exist or cannot be read."); return; } BufferedReader reader = new BufferedReader(new FileReader(file)); String line; while ((line = reader.readLine()) != null) { System.out.println(line); } reader.close(); } catch (IOException e) { e.printStackTrace(); } ``` 以上代码会逐行读取文件 `example.txt` 的内容,并将每一行输出到控制台。如果文件不存在、不可读或为空,会输出相应的提示信息。 ### 回答2: 在FileWriter,并没有read方法,而是有write方法用于将字符写入文件。你可能误解了FileWriter的使用方式。如果你想要从文件读取内容,应该使用其他,如FileReader。 当FileReader的read方法返回-1时,表示已经读取到文件的末尾,没有更多的字符可以读取了。这时,我们可以通过判断read方法的返回值是否为-1,来决定是否继续读取字符。 例如,我们可以使用一个循环来读取文件的内容: ```java try { FileReader fileReader = new FileReader("example.txt"); int character; while ((character = fileReader.read()) != -1) { System.out.print((char) character); } fileReader.close(); } catch (IOException e) { e.printStackTrace(); } ``` 在上述代码,我们首先创建了一个FileReader对象,指定要读取的文件路径。然后,使用一个while循环来判断read方法的返回值是否为-1,如果不是-1,说明还有字符可以读取,就将读取到的字符转换成char型并进行输出。最后,记得要关闭FileReader对象,释放资源。 总之,当FileReader的read方法返回-1时,表示已经读取到文件的末尾,没有更多的字符可以读取了。根据需要,你可以继续进行其他操作,比如关闭文件流或者进行其他处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值