文本文件都是字符数据,因此使用字符流进行操作。
可以通过缓冲区来提高对文件的读写效率。
读写文本文件
package com.gc.stream; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class Demo { public static void main(String[] args) { testFileWriter(); testFileReader(); testFileReaderWithBuffer(); } //手动设置缓冲区来提高效率 private static void testFileReaderWithBuffer() { FileReader fr = null; try { fr = new FileReader("temp\\text.txt"); //字符缓冲区 char[] cbuf = new char[1024]; //记录每次读取到cbuf缓冲区中的字符个数 int len = 0; //read(cbuf),一次读取cbuf.length个字符,如果数组满,则阻塞 //阻塞后,取出数组中的字符 //再次读取,重新存入数组,从0角标开始覆盖之前的数据 //最后读取到文件末尾,返回-1,循环结束 while((len=fr.read(cbuf))!=-1) { //从缓冲区中取出本次所读取的字符 System.out.print(new String(cbuf, 0, len)); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if(fr!=null) try { fr.close(); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException(e); } } } /** * 使用FileReader读取文件中的文本数据,没有使用缓冲区,一次读1个字符就阻塞,效率低! */ private static void testFileReader() { FileReader fr = null; try { fr = new FileReader("temp\\text.txt"); int ch = 0; //read()方法1次读1个字符,即2个字节。[1个中文字符占2个字节] //文件内容的结尾处用-1表示 while((ch=fr.read())!=-1) { System.out.print((char)ch); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if(fr!=null) try { fr.close(); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException(e); } } } /** * 使用FileWriter将字符数据写入到文件 */ private static void testFileWriter() { //字符流写文件 FileWriter fw = null; try { //如果是相对路径,则自动相对于该项目的根目录 File parent = new File("temp"); if(!parent.exists()) parent.mkdir(); File f = new File(parent,"text.txt"); if(!f.exists()) f.createNewFile(); //是否追加写入 boolean append = false; fw = new FileWriter(f,append); fw.write("你好hello stream!"); //换行 fw.write(System.lineSeparator()); fw.write("new Line"); //刷新缓冲区 fw.flush(); } catch (IOException e) { e.printStackTrace(); } finally { if(fw!=null) try { //关闭流(关闭动作会自动刷新缓冲区) fw.close(); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException(e); } } } }
复制文本文件
package com.gc.file; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; //手动设置缓冲区,提高读写效率 public class CopyFile { private static final int BUFFER_SIZE = 1024;//缓冲区大小 public static void main(String[] args) { FileReader fr = null; FileWriter fw = null; try { fr = new FileReader("temp\\text.txt"); fw = new FileWriter("temp\\copy_text.txt"); //建立一个临时容器,用来缓存每次读取到的字符 char[] buf = new char[BUFFER_SIZE]; //记录每次读取到字符缓冲区的字符个数 int len = 0; while((len=fr.read(buf))!=-1) { //将本次读取到的字符从缓冲区取出,并写入到文件 fw.write(buf, 0, len); } //fw.flush();//刷新与否都可以,因为close()会自动刷新缓冲区 } catch(IOException e) { throw new RuntimeException("文件读写发生错误"); } finally { //最后,关闭流 try { if(fr!=null) fr.close(); if(fw!=null) fw.close(); } catch (IOException e) { throw new RuntimeException("关闭流失败"); } } } }
相关推荐
* 字符流文件移动和读取:通过FileReader和FileWriter类可以实现文本文件的移动和读取操作。 6. 文件读取和存盘操作 文件读取和存盘操作可以通过字节流和字符流来实现。使用字节流可以读取和存盘任意类型的文件,...
根据给定的信息,本文将详细解释Java中的字符流概念,特别是`FileReader`和`FileWriter`类的具体应用。字符流在处理包含大量文本数据,尤其是含有中文等多字节字符编码的文件时非常有用。 ### 1. 字符流简介 在...
`FileReader`和`FileWriter`是最基本的字符流,主要用于读取或写入文本文件。 - **继承关系**: - `java.io.FileReader` → `java.io.Reader` → `java.lang.Object` - `java.io.FileWriter` → `java.io.Writer`...
### Android平台的txt文本文件读写操作 #### 一、引言 在Android应用程序开发过程中,文本文件(如.txt格式)的读写操作是常见需求之一。这些操作可以帮助开发者存储临时数据、配置信息或者实现简单的文件共享功能...
`FileReader`和`FileWriter`是最常见的字符流,用于读写文本文件。字符流通常需要考虑字符编码问题,因为不同编码下字符可能占用不同数量的字节。例如,同一个汉字在GBK编码下占用2字节,UTF-16下也是2字节,但在UTF...
在Android平台上,IO流是进行文件读写操作的基础工具,尤其在处理数据交换、资源保存等方面扮演着重要角色。本文将深入探讨Android中如何利用IO流进行文件的读写操作,以及相关的示例代码。 首先,Android中的IO流...
例如, FileReader和FileWriter用于读写文本文件。使用read()方法读取单个字符,write(char)方法写入单个字符。 3. 缓冲流(Buffered Stream):为了提高读写效率,Java提供了带缓冲功能的流,如...
4. **读写操作**:FileWriter、FileReader等类简化了文件读写,而LineIterator则方便逐行读取文件。另外,FastByteArrayOutputStream和FastByteArrayInputStream提供高效的内存内I/O。 5. **字符集和编码**:...
在Java编程语言中,文件的读写操作是日常开发中不可或缺的部分。本示例"读写文件操作demo-java"旨在教你如何使用Java进行文件的读取和写入,这对于处理数据存储、日志记录或是任何需要与磁盘交互的应用程序至关重要...
1. 文件操作权限:需要确保程序有足够的权限来操作文件。 2. 文件路径:需要正确指定文件路径。 3. 文件编码:需要正确指定文件编码,以避免乱码问题。 4. 输入/输出流关闭:需要正确关闭输入/输出流,以避免资源...
在Java编程语言中,文件读写操作是程序与外部数据交互的基本能力。这篇学习笔记将带你初探这个领域,适合新手入门。我们将讨论如何使用Java进行文件的读取、写入以及一些常见的应用场景。 首先,Java提供了java.io...
Java IO字符流是Java平台中用于处理文本数据的重要部分,特别是在进行文件读写操作时。字符流处理单个字符,适合处理基于字符编码(如UTF-8、GBK等)的文本文件。本篇将深入探讨Java IO中的字符流以及如何进行文件...
本文将深入探讨Java中的基本文件操作,包括文件的移动、读写以及文本文件的读写。 首先,让我们从文件操作开始。在Java中,我们可以使用`java.io.File`类来创建、删除、重命名或检查文件是否存在。例如,创建一个新...
- `FileReader`和`FileWriter`是字符流类,适用于处理文本文件,它们在内部使用了缓冲,但没有`BufferedReader`高效。 - `BufferedInputStream`和`BufferedOutputStream`是字节流的缓冲版本,可以与`...
2. FileReader和FileWriter:用于读写文件的字符流,同样分别是输入和输出。 3. BufferedReader和BufferedWriter:提供缓冲功能,提高读写效率。 4. InputStreamReader和OutputStreamWriter:在字节流和字符流之间...
例如,FileReader和FileWriter用于读写文本文件。 5. **BufferedInputStream/BufferedOutputStream,BufferedReader/BufferedWriter**:这些是带缓冲的流,可以提高读写效率,减少磁盘I/O次数。 6. **...
2. FileReader和FileWriter:处理字符流,适合读写文本文件。例如: ```java FileReader fr = new FileReader("input.txt"); FileWriter fw = new FileWriter("output.txt"); ``` 3. BufferedReader和...
- `FileReader` 和 `FileWriter` 处理文件中的字符数据。 - `PipedReader` 和 `PipedWriter` 创建字符流管道,类似于字节流的管道。 3. **装饰类(Filter)**: - 这些类用于增强基础流的功能,提供更高级别的...
Java IO(Input/Output)是Java中处理输入输出操作的核心包,它主要提供了文件读写、网络通信等基本功能。Java IO操作主要基于流的概念进行,分为字节流和字符流两大类。在实际开发中,为了提高读写效率,经常使用...
Java IO 操作是Java编程语言中的重要组成部分,它允许程序与外部存储设备进行交互,包括读取、写入、追加、删除、移动和复制文件。以下是对标题和描述中涉及知识点的详细说明: 1. **读取文件内容**: - **按字节...