java 将一个文本文件中的内容复制到零一个文本文件中,用到IO流

本文详细介绍了一个使用Java实现的文件复制方法。通过FileReader和FileWriter,该方法能够逐字符读取源文件,并将字符写入目标文件,实现文件内容的完全复制。文章深入探讨了文件读写操作的流程,包括异常处理和资源关闭机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.ggx.exercise;

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

import org.junit.Test;

public class copyText {

	@Test
	public void test() {
		copyTextbyChar("e:\\in.txt", "e:\\out.txt");//调用方法(传递路径),灵活;
	}

	public void copyTextbyChar(String sourceName, String targetName) {

		FileReader reader = null;
		FileWriter writer = null;
		try {
			reader = new FileReader(sourceName);

			writer = new FileWriter(targetName);
			
			int len = -1;
			while ( (len = reader.read()) != -1 ){//若读到-1,则说明文件读到了末尾;
				writer.write(len);  //逐个读取字符,然后逐个写入进targetName文件中;
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {

			try {
				if (reader != null)
					reader.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			try {
				if (writer != null)
					writer.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}

### Java IO使用教程及常见问题 #### 文件字节输入的应用场景与实现方法 对于文件的读取操作,`FileInputStream` 是一种常用的字节输入。它能够逐个字节地从文件中读取数据。在具体应用时,通常会先建立一个 `FileInputStream` 对象来连接目标文件,之后利用其提供的 `read()` 方法获取单个字节的数据并将其转换成相应的字符形式打印出来直到遇到文件结束符 `-1` 为止[^3]。 ```java public class FileInputStreamDemo01 { public static void main(String[] args) throws Exception { InputStream is = new FileInputStream("day09-oop/src/data.txt"); int b; while ((b = is.read()) != -1){ System.out.print((char) b); } is.close(); } } ``` #### 对象反序列化的程解析 当涉及到复杂对象而非单纯文本或二进制数据的时候,则需要用到更为高级的功能——对象串行化与反串行化。这里给出的对象反序列化例子展示了如何通过 `ObjectInputStream` 类加载存储于磁盘上的对象副本到内存之中。需要注意的是,在执行此过程前需确保所要恢复的对象实现了 `Serializable` 接口以便支持此类操作;另外就是路径设置应当准确无误以指向正确的文件位置[^1]。 ```java import java.io.*; public class Demo07 { public static void main(String[] args) throws IOException, ClassNotFoundException { ObjectInputStream ois = new ObjectInputStream(new FileInputStream("D:\\itcast\\oos.txt")); Object obj = ois.readObject(); Student s = (Student) obj; System.out.println(s.getName() + "," + s.getAge()); ois.close(); } } ``` #### 输入输出分类及其作用范围说明 按照功能划分,JavaIO 主要被区分为两大类别:节点(Node Stream)以及处理/包装(Processing Stream / Wrapper Stream)。前者负责直接访问外部设备如硬盘中的文件完成基本的数据传输任务;后者则是在已有基础上添加额外特性比如缓冲机制或是编码转换等功能从而简化编程工作量提升效率。整个体系结构围绕着四个核心抽象基类构建而成即 `InputStream`, `OutputStream`, `Reader`, 和 `Writer` 及它们各自的子类群组形成了一套完整的解决方案框架用于满足各种不同的应用场景需求[^5]。 #### 文本文件读写的简易指南 针对简单的纯文本文件而言,除了上述提到过的基于字节数组的方式外还可以采用专门设计用来处理 Unicode 字符集的 Reader 和 Writer 家族成员来进行高效便捷的操作。这类工具允许开发者一次性读入整行甚至多行文字内容而无需关心底层具体的位模式表示细节因此非常适合初学者快速入门掌握基础技能[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值