public static void main(String[] args) {
try {
long starttime = System.currentTimeMillis();
System.out.print("文件操作开始时间:" + starttime + "\n");
File origfile = new File("src\\resources\\Sunset.jpg");
FileInputStream fw = new FileInputStream(origfile);
File newfile = new File("src\\resources\\outImage.jpg");
FileOutputStream fos = new FileOutputStream(newfile);
BufferedOutputStream bos = new BufferedOutputStream(fos);
int a;
while ((a = fw.read()) != -1) {
bos.write(a);
}
bos.flush();
fw.close();
fos.close();
bos.close();
System.out.print("文件操作结束时间:" + System.currentTimeMillis() + "\n");
System.out.println("文件操作耗时:"
+ (System.currentTimeMillis() - starttime) + "毫秒");
} catch (IOException e) {
e.printStackTrace();
}
}
写了一个关于文件io的小例子,虽然能够成功地完成自己预想的功能,但是对其中的一些过程还是不是很明白,问题就是bos何时会将缓存在内存中的字节流写入文件?最初以为是bos.flush()这一句使得内存中的字节流被写入到了文件,但是后来将这句注释掉之后,发现它还是会将字节流写入指定的文件,只是会丢失掉文件末尾的一些字节,据此推断,应该是每次buffer满了以后它会自动将buffer中的东西写入文件,然后开始下一轮缓冲,依此循环,至于最后一部分字节会丢失掉,是因为buffer未满不会自动写入文件,必须用flush强制刷新。但是有一点我比较困惑,我操作的是一个图片文件,在写出的过程中会看到该图片文件的字节数在增长,直到增长到不会自动写入为止,这个时候虽然图片是不全的,但是也应该是可以打开看到一个不全的图片的,而实际上却是打开看不到图片内容,而程序继续运行一小段时间之后又可以看到图片内容了,这期间图片的字节数没有任何变化,这是为何?
分享到:
相关推荐
- **标准IO跟文件IO区别.pdf**:这个文档可能详细分析了标准IO和文件IO的差异,包括使用场景、性能影响和具体实现细节。 - **标准IO.pdf**:这份资料可能专注于标准IO的使用,包括其函数接口、工作原理以及如何在...
标准输入输出和文件IO的区别 标准输入输出和文件IO是计算机编程中两个基本概念,都是IO操作的实现方式,但它们之间有着本质的区别。本文将详细介绍标准输入输出和文件IO的概念、特点、区别和应用场景。 标准输入...
1. 打开文件:使用特定的函数(如C++的`fopen`,Java的`FileInputStream`或Python的`open`)打开一个文件,指定文件路径和访问模式(读、写、追加等)。例如,`fopen("example.txt", "r")`表示以只读模式打开名为...
文件IO是计算机系统中最基本的输入/输出操作之一,它允许程序访问和操作文件。文件IO可以分为两大类:标准IO和文件IO。标准IO是指使用标准输入输出流来读取和写入文件,而文件IO是指使用文件指针来读取和写入文件。 ...
当打开一个文件时,内核返回一个文件描述符,该文件描述符将作为参数传送给 read 或 write 函数。文件描述符的范围是 0 ~ OPEN_MAX,早期的 Unix 版本采用的上限值是 19,现在很多系统则将其增加至 63。 三、open ...
FileInputStream 是 InputStream 的子类,用于打开一个输入文件,以便读取文件的内容。 OutputStream 是 Java 中的输出流接口,用于写入文件的内容,常用的 OutputStream 子类包括 FileOutputStream、...
### Android文件IO操作详解 在Android开发中,文件的输入输出(IO)操作是不可或缺的一部分,它涉及到数据的存储与读取,对于应用程序的数据持久化至关重要。本文将深入解析Android中的IO操作,涵盖基本概念、常见...
Linux基本文件IO ppt格式教程 Linux 指令
Java文件输入输出(IO)是Java编程中一个基础且重要的概念,它允许程序与外部存储设备进行数据交换。在这个主题中,我们将深入探讨Java如何执行简单的文件读写和追加操作。 首先,Java中的文件IO操作主要依赖于`...
Apache Commons IO是一个用于处理基本输入/输出操作的库,它提供了许多实用类和方法,能够帮助开发者更方便地处理文件和流。而Apache Commons FileUpload则专门针对文件上传场景,它能够解析HTTP协议中的多部分请求...
Visual Basic 2005文件IO与数据存取秘诀随书光盘
在学习过程中,记得结合“第10章 文件IO”中的内容,逐步实践,理论与实践相结合,从而达到融会贯通的效果。 文件I/O是LabVIEW编程中不可或缺的一部分,无论是进行数据分析、数据存储还是与其他系统交互,它都扮演...
总之,`ls_stu.c`是一个关于Linux标准IO的应用实例,它展示了如何利用标准输入、输出以及文件I/O来管理和处理学生信息。通过对这个程序的学习,我们可以深入了解C语言在Linux环境下的文件操作和数据处理能力。
java新IO文件流java新IO文件流java新IO文件流java新IO文件流java新IO文件流java新IO文件流java新IO文件流
在这个名为"IO-Link全局库文件(MASTER和DEVICE)FB50001及说明"的压缩包中,包含的是关于IO-Link主站(MASTER)和设备(DEVICE)的全局库文件以及相关的使用说明。 IO-Link Master是IO-Link系统的核心部分,负责与...
文件IO相关知识点思维导图,含文件描述符、系统调用接口原型、含义返回值参数介绍等,文档会不定期更新,添加新的知识点。
本项目是基于第二阶段文件IO所学知识所编写的。 该项目分为4个模块,开机界面模块、电子相册模块、五子棋模块和2048小游戏模块 #使用说明 开机界面为3个按钮,分别为"PHOTO"电子相册按钮、"五子棋"五子棋按钮、...
Linux提供了两种文件IO的方式: 第一种:是带缓冲区的IO,第二种是不带缓冲区的IO, 分别称之为标准IO和系统IO
本章所说明的函数经常被称为不带缓冲的I/O ,术语不带缓冲指的是每个read和write都调用内核中的一个系统调用。这些不带缓冲的IO不是ISO C的组成部分,但是,它们是POSIX.1和Single UNIX Specification的组成部分 ...