io流中read方法使用不当导致运行异常的一点
public class CopyMp3test {
public static void main(String[] args) throws IOException {
		FileInputStream fis= new FileInputStream("d:\\0.mp3");
		FileOutputStream fos= new FileOutputStream("d:\\2.mp3");
		byte[] by= new byte[1024];
		int len=0;
		while((len=fis.read())!=-1)
		{
			fos.write(by, 0, len);
		}
		fis.close();
		fos.close();
	}
}
加下划线的地方容易出错,read方法使用没有指定byte数组,在fos输出流调用write方法时写的数据实际上是空的数组,由于len在此情况下是read方法返回的数据的字节数,也就是说一个循环会写一个1024的数据,一个MP3文件假如大小为4M,那会导致循环4*1024*1024次,就需要写入一个空的1024的数组的数据,在此估计为1kb,导致2.MP3为4G;
io流中read方法使用不当导致运行异常的一点的更多相关文章
- 第54节:Java当中的IO流(中)
		Java当中的IO流(中) 删除目录 // 简书作者:达叔小生 import java.io.File; public class Demo{ public static void main(Stri ... 
- Java当中的IO流(中)
		Java当中的IO流(中) 删除目录 import java.io.File; public class Demo{ public static void main(String[] args){ / ... 
- 揭开Java IO流中的flush()的神秘面纱
		大家在使用Java IO流中OutputStream.PrintWriter --时,会经常用到它的flush()方法. 与在网络硬件中缓存一样,流还可以在软件中得到缓存,即直接在Java代码中缓存. ... 
- WPF--Dispatcher.BeginInvoke()方法使用不当导致UI界面卡死的原因分析
		原文地址: http://www.tuicool.com/articles/F7reem http://blog.csdn.net/yl2isoft/article/details/11711833 ... 
- Dispatcher.BeginInvoke()方法使用不当导致UI界面卡死的原因分析
		原文:Dispatcher.BeginInvoke()方法使用不当导致UI界面卡死的原因分析 前段时间,公司同事开发了一个小工具,在工具执行过程中,UI界面一直处于卡死状态. 通过阅读代码发现,主要是 ... 
- io流中的装饰模式对理解io流的重要性
		为了说明 io流中的装饰者模式对理解io流的重要性,我想先简要介绍以下io的装饰模式. 装饰(decorator)你也可以翻译成修饰.比如:一个会精通化学数学的物理学家.在这个"物理学家&q ... 
- Java中IO流中所涉及到的各类方法介绍
		IO流之字节流 (1)IO用于在设备间进行数据传输的操作 (2)分类: A:流向 输入流 读取数据 输出流 写出数据 B:数据类型 字节流 字节输入流 字节输出流 字符流 字符输入流 字符输出流 注意 ... 
- Java笔记(二十七)……IO流中 File文件对象与Properties类
		File类 用来将文件或目录封装成对象 方便对文件或目录信息进行处理 File对象可以作为参数传递给流进行操作 File类常用方法 创建 booleancreateNewFile():创建新文件,如果 ... 
- IO流中的Stream相关对象
		流无处不在,只要是关于到文件的输入.输出.更新等,关于IO流,项目中还是经常用到的,写log日志免不了要与其打交道,现在需要用到,就顺道好好回顾一下进行整理,首先是几个需要用到的类的说明,其实说简单点 ... 
随机推荐
- Cygwin安装配置
			1.下载安装Cygwin 我们可以到Cygwin的官方网站下载Cygwin的安装程序,地址是: http://www.cygwin.com/ 或者直接使用下载连接来下载安装程序,下载连接是: ht ... 
- 【jQuery源码】jQuery对象初始化
			看了一下午还是有很多地方没弄明白,jQuery的一些工具方法的原理也不完全清楚,这篇文章会随着我深入阅读jQuery源码的同时不断更新. // Initialize a jQuery object / ... 
- Android_Activity启动模式
			在android里,有4种activity的启动模式,分别为: “standard” (默认) “singleTop” “singleTask” “singleInstance” 它们主要有如下不同: ... 
- golang的并行快速排序
			.nums[]作为core,将nums中大于core的元素放入greater,将不大于core的元素放入less 当nums长度为1时往ch中写入此元素 .分别对less和greater进行1操作(并 ... 
- Hadoop MapReduce流程及容错
			shuffle流程 输入分片(input split):在进行map计算之前,mapreduce会根据输入文件计算输入分片(input split),每个输入分片(input split)针对一个ma ... 
- C++中迭代器原理、失效和简单实现
			目录 迭代器的使用 迭代器的种类 迭代器的失效 迭代器的实现 1.迭代器的使用 为了提高C++编程的效率,STL中提供了许多容器,包括vector.list.map.set等.有些容器例如vector ... 
- Nodejs学习笔记(一)—简介及安装Node.js开发环境
			一.简介 Node.js是让Javascript脱离浏览器运行在服务器的一个平台,不是语言: Node.js采用的Javascript引擎是来自Google Chrome的V8:运行在浏览器外不用考虑 ... 
- spring AOP 之四:@AspectJ切入点标识符语法详解
			@AspectJ相关文章 <spring AOP 之二:@AspectJ注解的3种配置> <spring AOP 之三:使用@AspectJ定义切入点> <spring ... 
- [BZOJ 5074]小B的数字
			Description 题库链接 给你一个长度为 \(n\) 的序列 \(a_1,a_2,\cdots,a_n\) ,让你生成另一个序列 \(b_1,b_2,\cdots,b_n\) ,使得 \(\f ... 
- [转]微信小程序之购物数量加减 —— 微信小程序实战商城系列(3)
			本文转自:http://blog.csdn.net/michael_ouyang/article/details/70194144 我们在购买宝贝的时候,购物的数量,经常是我们需要使用的,如下所示: ... 
