`
ialand
  • 浏览: 7755 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

关于文件io的一个问题

 
阅读更多
	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强制刷新。但是有一点我比较困惑,我操作的是一个图片文件,在写出的过程中会看到该图片文件的字节数在增长,直到增长到不会自动写入为止,这个时候虽然图片是不全的,但是也应该是可以打开看到一个不全的图片的,而实际上却是打开看不到图片内容,而程序继续运行一小段时间之后又可以看到图片内容了,这期间图片的字节数没有任何变化,这是为何?
分享到:
评论

相关推荐

    Linux文件IO跟标准IO总结

    - **标准IO跟文件IO区别.pdf**:这个文档可能详细分析了标准IO和文件IO的差异,包括使用场景、性能影响和具体实现细节。 - **标准IO.pdf**:这份资料可能专注于标准IO的使用,包括其函数接口、工作原理以及如何在...

    标准输入输出和文件IO的区别

    标准输入输出和文件IO的区别 标准输入输出和文件IO是计算机编程中两个基本概念,都是IO操作的实现方式,但它们之间有着本质的区别。本文将详细介绍标准输入输出和文件IO的概念、特点、区别和应用场景。 标准输入...

    文件IO编程总结

    1. 打开文件:使用特定的函数(如C++的`fopen`,Java的`FileInputStream`或Python的`open`)打开一个文件,指定文件路径和访问模式(读、写、追加等)。例如,`fopen("example.txt", "r")`表示以只读模式打开名为...

    文件IO 文件操作 操作文件 标准IO和文件IO

    文件IO是计算机系统中最基本的输入/输出操作之一,它允许程序访问和操作文件。文件IO可以分为两大类:标准IO和文件IO。标准IO是指使用标准输入输出流来读取和写入文件,而文件IO是指使用文件指针来读取和写入文件。 ...

    linux文件IO之整理笔记

    当打开一个文件时,内核返回一个文件描述符,该文件描述符将作为参数传送给 read 或 write 函数。文件描述符的范围是 0 ~ OPEN_MAX,早期的 Unix 版本采用的上限值是 19,现在很多系统则将其增加至 63。 三、open ...

    Java中文件IO流.pdf

    FileInputStream 是 InputStream 的子类,用于打开一个输入文件,以便读取文件的内容。 OutputStream 是 Java 中的输出流接口,用于写入文件的内容,常用的 OutputStream 子类包括 FileOutputStream、...

    Android文件IO操作

    ### Android文件IO操作详解 在Android开发中,文件的输入输出(IO)操作是不可或缺的一部分,它涉及到数据的存储与读取,对于应用程序的数据持久化至关重要。本文将深入解析Android中的IO操作,涵盖基本概念、常见...

    Linux基本文件IO

    Linux基本文件IO ppt格式教程 Linux 指令

    Java简单的文件IO程序

    Java文件输入输出(IO)是Java编程中一个基础且重要的概念,它允许程序与外部存储设备进行数据交换。在这个主题中,我们将深入探讨Java如何执行简单的文件读写和追加操作。 首先,Java中的文件IO操作主要依赖于`...

    fileupload commons-io上传文件

    Apache Commons IO是一个用于处理基本输入/输出操作的库,它提供了许多实用类和方法,能够帮助开发者更方便地处理文件和流。而Apache Commons FileUpload则专门针对文件上传场景,它能够解析HTTP协议中的多部分请求...

    Visual Basic 2005文件IO与数据存取秘诀

    Visual Basic 2005文件IO与数据存取秘诀随书光盘

    labview 文件IO.zip_-baijiahao_labview 文件IO 8个实例_labview 文件io_labvi

    在学习过程中,记得结合“第10章 文件IO”中的内容,逐步实践,理论与实践相结合,从而达到融会贯通的效果。 文件I/O是LabVIEW编程中不可或缺的一部分,无论是进行数据分析、数据存储还是与其他系统交互,它都扮演...

    linux 标准IO——学生信息管理

    总之,`ls_stu.c`是一个关于Linux标准IO的应用实例,它展示了如何利用标准输入、输出以及文件I/O来管理和处理学生信息。通过对这个程序的学习,我们可以深入了解C语言在Linux环境下的文件操作和数据处理能力。

    java新IO文件流

    java新IO文件流java新IO文件流java新IO文件流java新IO文件流java新IO文件流java新IO文件流java新IO文件流

    IO-Link 全局库文件( MASTER 和 DEVICE)FB50001及说明.zip

    在这个名为"IO-Link全局库文件(MASTER和DEVICE)FB50001及说明"的压缩包中,包含的是关于IO-Link主站(MASTER)和设备(DEVICE)的全局库文件以及相关的使用说明。 IO-Link Master是IO-Link系统的核心部分,负责与...

    Linux_文件IO.xmind

    文件IO相关知识点思维导图,含文件描述符、系统调用接口原型、含义返回值参数介绍等,文档会不定期更新,添加新的知识点。

    基于arm-linux-gcc版本 文件IO项目 2048 五子棋项目

    本项目是基于第二阶段文件IO所学知识所编写的。 该项目分为4个模块,开机界面模块、电子相册模块、五子棋模块和2048小游戏模块 #使用说明 开机界面为3个按钮,分别为"PHOTO"电子相册按钮、"五子棋"五子棋按钮、...

    文件IO概念

    Linux提供了两种文件IO的方式: 第一种:是带缓冲区的IO,第二种是不带缓冲区的IO, 分别称之为标准IO和系统IO

    Unix文件IO汇总

    本章所说明的函数经常被称为不带缓冲的I/O ,术语不带缓冲指的是每个read和write都调用内核中的一个系统调用。这些不带缓冲的IO不是ISO C的组成部分,但是,它们是POSIX.1和Single UNIX Specification的组成部分 ...

Global site tag (gtag.js) - Google Analytics