FileInputStream与FileOutputStream的应用。
这是一对继承于InputStream与OutputStream的类。用于本地文件读写(二进制格式读写并且是顺序读写,读和写要分别创建出不同的文件流对象)
本地文件编程的基本过程:
1、生成文件流对象(对文件读操作应该是FileInputStream,对文件写操作应该是FileOutputStream)。
2、调用FileInputStream或FileOutputStream类中的功能函数如:read(),write(int i)等,读写内容。
3、关闭文件(close()).
实例如下,刘文件读写:
流文件的单元是字节,所以它不但可以读写文本文件,也可以读写图片、声音、影像文件,这种特点非常有用,因为我们可以把这种文件变成流,然后在网络上传输。
问题是有了通用的流文件以后,为什么还要专门的字符流呢?这是因为文本可以用不同的方式存储,可以是普通的文本(UTF-8编码方式),ASCII文本和Unicode文本,字符流对象可以进行必要的转换,从而读出正确的文本。
有人认为流文件不能读写文本文件,这其实是个误会,因为文本文件本质上也是由字节组成的,当然是流文件的一种。作为读写文件的全体,这是没问题的,但是,如果要处理每次读入的内容,就最好使用字符流。
所以在文本文件处理时,使用字符流是个最常用的方法。
import java.io.*;
public class FileStreamDemo {
public static void main(String[] args) throws IOException {
//创建两个文件,face.gif是已经存在文件,newFace.gif是新创建的文件
File inFile = new File("face.gif");
File outFile = new File("newFace.gif");
//创建流文件读入与写出类
FileInputStream inStream = new FileInputStream(inFile);
FileOutputStream outStream = new FileOutputStream(outFile);
//通过available方法取得流的最大字符数
byte[] inOutb = new byte[inStream.available()];
inStream.read(inOutb); //读入流,保存在byte数组
outStream.write(inOutb); //写出流,保存在文件newFace.gif中
inStream.close();
outStream.close();
}
}
实例:读写任意大文件应用
因为byte数组最大存储值不超过64M,所以当一个文件大于60M 的时候,需要分开几个流操作。我们把上面的程序作一个修改,就可以写入任意大小的文件。这个程序应用了FileInputStream类的方法如下:
read(byte[] b,int off,int len)
把特定位置的流内容读入数组,已经读入byte[]数组的内容,会在流文件中删除。
程序运行的结果会产生一个新文件。
样例:
import java.io.*;
public class FileStreamDemo2 {
public static void main(String[] args) throws IOException {
//创建两个文件
File inFile = new File("tcty36.rm");
File outFile = new File("newtcty36.rm");
//最大的流为60Mb,当文件的容量大于60Mb的时候便分开流
final int MAX_BYTE = 60000000;
long streamTotal = 0; //接受流的容量
int streamNum = 0; //流需要分开的数量
int leave = 0; //文件剩下的字符数
byte[] inOutb; //byte数组接受文件的数据
//创建流文件读入与写出类
FileInputStream inStream = new FileInputStream(inFile);
FileOutputStream outStream = new FileOutputStream(outFile);
//通过available方法取得流的最大字符数
streamTotal = inStream.available();
//取得流文件需要分开的数量
streamNum = (int)Math.floor(streamTotal/MAX_BYTE);
//分开文件之后,剩余的数量
leave = (int)streamTotal % MAX_BYTE;
//文件的容量大于60Mb时进入循环
if (streamNum > 0) {
for(int i = 0; i < streamNum; ++i){
inOutb = new byte[MAX_BYTE];
//读入流,保存在byte数组
inStream.read(inOutb, 0, MAX_BYTE);
outStream.write(inOutb); //写出流
outStream.flush(); //更新写出的结果
}
}
//写出剩下的流数据
inOutb = new byte[leave];
inStream.read(inOutb, 0, leave);
outStream.write(inOutb);
outStream.flush();
inStream.close();
outStream.close();
}
}
分享到:
相关推荐
文件读写监控工具是计算机系统管理和维护中不可或缺的软件,它们可以帮助用户跟踪、记录和分析系统中的文件操作,包括打开、创建、修改、删除等动作。这类工具在故障排查、性能优化、安全审计等方面有着广泛的应用。...
在易语言中,大文件读写是一个常见的需求,尤其在处理大数据、日志分析或者文件备份等场景下。本模块就是针对这种需求而设计的,名为“易语言大文件读写模块”。 该模块的核心功能是优化大文件的处理效率,避免一次...
在Android应用开发中,文件读写权限是至关重要的一个环节,因为这关乎到应用程序能否正常地存储和访问数据。Android操作系统采用严格的权限管理系统,确保应用只能在其被授权的范围内操作。下面将详细介绍Android中...
### Python中使用asyncio封装文件读写 #### 引言 在现代软件开发中,特别是在Web后端和服务端开发领域,非阻塞I/O技术变得越来越重要。这主要是因为随着互联网应用规模的增长,服务器需要处理成千上万个并发连接,...
Python 文件读写练习题 Python 语言中处理文件读写是非常重要的一部分,本文将通过实践 exercises 介绍 Python 中的文件读写操作。 文件读写的重要性 在实际应用中,文件读写操作是非常常见的,例如读取数据文件...
1、 文件读写 包括两个内容:查找文件中“java”字符串的个数;利用命令行参数显示文件的最后指定行。 在查找“java”字符串个数的程序中,先读出文件内容,再逐个字符对比,找出“java”字符,最终把结果写入另一...
在Android系统中,文件读写操作是开发过程中常见的任务,涉及到资源文件、数据区文件以及外部存储(如SD卡)的访问。以下是对这些操作的详细说明: 一、资源文件的读取 1. 从resource的raw中读取文件数据: 资源...
### MFC INI 文件读写详解 #### 一、概述 在 Windows 操作系统中,INI 文件是一种重要的配置文件格式,通常用于存储程序的配置信息。对于开发人员来说,掌握如何使用 MFC(Microsoft Foundation Classes)框架进行...
对于开发者来说,这意味着需要更新代码以适配这些新规则,尤其是在进行文件读写操作时。本文将详细探讨Android 13的读写权限变更,以及如何在小米14设备上处理txt文件的读写测试。 首先,理解Android 13中的存储...
对于大数据量的CSV文件,可以考虑使用更高效的文件读写方法,如`std::ifstream`和`std::ofstream`,或者使用内存映射文件(`CreateFileMapping`和`MapViewOfFile`)。 8. **测试与调试** 完成代码编写后,进行...
在编程领域,文件读写是常见的操作之一,尤其是在Windows应用程序开发中,MFC(Microsoft Foundation Classes)框架提供了方便的API来实现这一功能。MFC是一个C++类库,它封装了Windows API,使得开发者可以更加方便...
在C#编程语言中,文件读写操作是基础且至关重要的功能,允许程序与本地文件系统交互。本文将深入探讨如何在C#中执行文件的读写操作,以及如何进行文件删除。 首先,让我们了解C#中用于文件操作的主要类:`System.IO...
DWG文件读写开发库是专门用于处理DWG(Drawing)格式文件的工具,这种格式通常与AutoCAD软件紧密关联,用于存储二维和三维设计数据。这个开发库为程序员提供了在C++和C#编程环境中读取和写入DWG文件的能力,极大地...
"采用无缓冲方式实现文件读写" 本文档是武汉大学计算机学院《Windows原理与应用》课程实验报告,旨在介绍如何使用无缓冲方式实现文件读写。该实验报告的主要内容包括实验目的、实验设计、实验原理和实验步骤等方面...
C语言文件读写函数详解 在 Linux 操作系统中,C 语言提供了多种文件读写函数,包括非标准文件读写函数和标准文件读写函数。下面将对这两种类型的文件读写函数进行详细介绍。 非标准文件读写函数 非标准文件读写...
在Delphi编程环境中,文件读写是常见的操作,主要用于存储和检索数据。本文将深入探讨如何使用Delphi进行文本文件的读写操作,包括基本概念、常用函数和类,以及实际应用示例。 首先,了解文件系统的基本概念是至关...
在这个"**MFC txt文件读写**"的实践中,我们将探讨如何利用MFC来处理文本文件的读取和写入操作。 首先,我们需要了解MFC中的CFile类,它是处理文件操作的基础。CFile类提供了打开、关闭、读取和写入文件的基本方法...
本压缩包"开发windows驱动程序,实现监控文件读写操作.zip"提供了一个关于如何创建驱动程序以监控文件系统读写操作的实例。下面我们将深入探讨这一主题。 1. **驱动程序概述** - 驱动程序是硬件设备与操作系统之间...