`
XiaoFan012
  • 浏览: 15989 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

JavaIO_Demo_BufferedInputStream

 
阅读更多

这两天闲来无事,重温下JavaIO,并且做做小demo,写了一个文件copy的Demo,具体代码如下:

       public void copyFile(File fromFile, File toFile){
		try {
			InputStream is = new BufferedInputStream(new FileInputStream(fromFile));
			OutputStream os = new BufferedOutputStream(new FileOutputStream(toFile));
			byte[] bytes = new byte[1024];
			while(is.read(bytes) != -1) {
				os.write(bytes);
			}
			os.flush();
			is.close();
			os.close();
			
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
   

写完以后一测试,就发现结果不如预想的那样,会出现copy出来的文件比原来的文件多一些内容。后来进行调试才发现,原来

os.write(bytes);
并不会把bytes清空,只是把读取的内容写进去,没覆盖掉的那些字节依然存在,因此在写出的时候又把它们再次输出来了。正确的做法是:

int len = is.read(bytes);
while(len != -1){
    os.write(bytes,0,len);
    len = is.read(bytes);
}





分享到:
评论

相关推荐

    IO流的demo

    在Java编程语言中,输入/输出(IO)流是一组用于读取和写入数据的类,它们构成了Java IO API的基础。本示例是关于如何使用Java中的IO流进行实际操作的演示,主要包括字节流和字符流的使用。字节流处理的是原始的八位...

    android的IO流读写文件demo.zip_DEMO_android_android的IO流读写文件操作

    首先,Android中的IO流主要包括字节流(Byte Stream)和字符流(Character Stream),它们都是Java IO体系的一部分。字节流处理单个字节的数据,如InputStream和OutputStream家族,而字符流处理Unicode字符,如...

    Java IO 使用例

    在“JavaIODemo”这个示例中,可能会包含以上提到的一些或全部Java IO操作的代码实例,通过这些实例,我们可以学习如何在实际项目中应用Java IO API。实践是掌握Java IO的最佳方式,通过对这些示例的分析和运行,...

    java IOdemo

    Java IO(Input/Output)是Java编程语言中用于处理输入输出操作的重要部分。它提供了丰富的类库,使得程序能够与各种设备、文件、网络以及内存数据进行交互。在这个"java IOdemo"中,我们可能看到一些基本的IO操作...

    Java-Io流,练习

    为了提高IO操作的效率,Java提供了缓冲流,如`BufferedInputStream`和`BufferedOutputStream`,以及`BufferedReader`和`BufferedWriter`。这些类在内部维护了一个缓冲区,可以减少实际的物理I/O次数。 五、转换流...

    JavaDemo.rar

    JavaDemo.rar中的内容可能包含了一系列的示例代码,用于演示如何使用Java的File类以及IO流进行实际操作。现在,我们将深入探讨这些关键知识点。 首先,`File`类是Java.io包中的核心类,它提供了与文件和目录路径名...

    mapleins-io-demo

    "Mapleins-IO-Demo" 是一个基于Java的项目示例,主要展示了Java输入输出(IO)功能的使用。这个项目可能包含了多种IO操作的实例,帮助开发者理解和实践Java中的文件读写、流处理、缓冲区操作以及数据转换等核心IO...

    Java从网络取得文件Demo源码.zip

    这个"Java从网络取得文件Demo源码.zip"压缩包包含了一个示例项目,展示了如何使用Java实现这一功能。下面我们将深入探讨相关的Java知识点。 1. **URL类**:在Java中,`java.net.URL`类用于表示统一资源定位符,它是...

    bytestreamdemo.zip

    java IO 字节流练习代码 FileInputStream和FileOutputStream BufferedInputStream 和 BufferedOutputStream DataInputStream 和 DataOutputStream ObjectInputStream和ObjectOutputStream PrintStream ...

    Java 中的 IO 流是如何实现的?

    Java 中的 IO 流是Java平台提供的一种处理输入输出数据的方式。IO,即Input(输入)和Output(输出),在Java中表现为数据流的形式,用于读取或写入各种数据源,如文件、网络连接等。Java的IO流体系结构复杂而强大,...

    Android 下载文件Demo

    在Java和Android中,输入输出流(IO流)是处理数据传输的核心工具,主要分为字节流和字符流两大类。字节流处理二进制数据,如图片、音频、视频以及各种文件;而字符流则处理基于字符的数据,如文本。 1. 字节流与...

    javaTest.rar

    Java编程中的IO(Input/Output)和NIO(New Input/Output)是处理数据输入与输出的核心技术,而Socket则是网络通信的基础。在"javaTest.rar"这个压缩包中,很可能包含了一些关于这些主题的简单示例代码。下面将详细...

    socket多线程,io流传输应用项目demo

    在这个"socket多线程,io流传输应用项目demo"中,我们将深入探讨如何在Java环境下利用多线程和IO流实现高效的文件(如图片)传输。 首先,让我们了解Socket的基本概念。Socket是进程间通信的一种方式,它提供了在...

    Java中io流解析及代码实例

    2. BufferedInputStream/BufferedOutputStream:用于缓存读取和写入的字节流,提高IO操作的效率。 3. SequenceInputStream:用于将多个字节流合并成一个字节流。 4. ObjectInputStream/ObjectOutputStream:用于读取...

    Java学习资料 包含了java SE中的集合、String类和IO流中一些常用的API的知识点整理

    在"java-se-demo-master"这个压缩包中,可能包含了各种示例代码和练习,帮助你更好地理解和应用这些知识点。通过实践,你可以更深入地理解Java集合、String和IO流的使用,提升你的编程技能。记得,理论与实践相结合...

    socket 文件传输编程 java

    7. **性能优化**:为了提高文件传输的效率,可以考虑使用缓冲区(BufferedInputStream和BufferedOutputStream),减少系统调用的次数。此外,还可以使用NIO(New IO)框架,以非阻塞方式处理连接和数据传输,提高...

    Android示例

    通过这个“JavaIODemo”示例,开发者可以学习到如何在Android环境下高效、安全地进行文件操作、网络通信以及数据序列化等I/O任务。这有助于提升应用的性能和用户体验,同时降低资源消耗。在实际开发中,理解并熟练...

    SpringBoot 整合 MinIo demo

    try (BufferedInputStream in = new BufferedInputStream(response.body())) { byte[] buffer = new byte[1024]; int bytesRead; while ((bytesRead = in.read(buffer)) != -1) { out.write(buffer, 0, ...

Global site tag (gtag.js) - Google Analytics