java 文件切割,为什么在关闭流的时候报错,51行

 1 package java_IO.Test_1.File_Split_and_SequeceDemo;
 2
 3 import java.io.File;
 4 import java.io.FileInputStream;
 5 import java.io.FileOutputStream;
 6 import java.io.IOException;
 7
 8 public class FileSplit {
 9
10     private File file;
11     private int size;
12
13     public FileSplit(File file, int size) {
14         // TODO Auto-generated constructor stub
15         this.file = file;
16         this.size = size * 1024 * 1024;
17
18     }
19
20     public void Spliting() throws IOException {
21         // TODO Auto-generated method stub
22
23         // 读取源文件
24         FileInputStream fis = new FileInputStream(file);
25
26         // 创建碎片文件存放目录,若碎片存放目录不存在刚创建
27         File dir = new File(file.getParent(), "filesPart");
28         if (!dir.exists()) {
29             dir.mkdirs();
30         }
31
32         // 创建缓存区
33         byte[] bufb = new byte[1024 * 1024];
34         int len = 0;
35
36         for (int i = 1;; i++) {
37             int sumSize = 0;
38             File filePart = new File(dir, i + ".part");
39             FileOutputStream fos = new FileOutputStream(filePart);
40             while (sumSize < size) {
41                 if ((len = fis.read(bufb)) != -1) {
42                     fos.write(bufb, 0, len);
43                     sumSize += len;
44                 }
45
46             }
47             fos.close();
48
49
50         }
51         fis.close();
52
53
54     }
55
56
57 }

上述代码实现的是一个文件切割的功能,构造函数参数file是接收要切割的文件,size是用户指定的每个碎片文件的大小 ,问题是在我最后也就是51行关闭读取文件流的时候,报错,说是什么编译错误。求个大大神指点。如看懂给我留言

时间: 2024-11-05 17:22:43

java 文件切割,为什么在关闭流的时候报错,51行的相关文章

出现“java.lang.AssertionError: SAM dictionaries are not the same”报错

运行一下程序时出现“java.lang.AssertionError: SAM dictionaries are not the same”报错 java -jar picard.jar SortVcf I=1000G_phase1.indels.hg19.sites.vcf O=1000G_phase1.indels.hg19.sites.sorted.vcf SEQUENCE_DICTIONARY=hg19.dict 说明要先更新hg19.dict,在做上步之前,先运行如下命令: java

JAVA文件读写输入输出流关闭问题、JAVA垃圾回收

切记: 读写文件一定要及时关闭输入输出流 项目中,用到将rtf文档上传后修改一个更新标记为0未更新,另外一个程序将文档上传到LED屏上面,LED程序检测到更新标记为未更新时将状态投到LED上面,并将状态更新为1已更新. 现象:上传文件时使用输入输出流,上传成功后LED屏不显示更新文档,为空. 部分代码: public void save(){ upload(); save(XXXXX); } public void upload() throws Exception{ //以服务器的文件保存地址

Android(java)学习笔记125:Clock app编写报错02

1.首先之间看错误: 07-13 10:07:55.354: E/AndroidRuntime(8008): FATAL EXCEPTION: main 07-13 10:07:55.354: E/AndroidRuntime(8008): java.lang.NullPointerException 07-13 10:07:55.354: E/AndroidRuntime(8008): at com.himi.clock.AlarmActivity.onClick(AlarmActivity.

Android(java)学习笔记116:PC_Phone通信程序报错

1.首先我写的程序代码如下: 1 package com.himi.udpsend; 2 3 import java.net.DatagramPacket; 4 import java.net.DatagramSocket; 5 import java.net.DatagramSocketImpl; 6 import java.net.InetAddress; 7 import java.net.SocketException; 8 import java.net.UnknownHostExce

C# Directory.GetFiles()获取文件时如果是根目录时有隐藏文件则报错的处理

如果Directory.GetFiles("d:\"),则由于回收站是隐藏文件而报错,怎么躲避这种错误呢, 我要了一种办法,只要遇到隐藏文件夹就跳过的方法: foreach (var item in Directory.GetDirectories("d:")) { if ((new FileInfo(item).Attributes & FileAttributes.Hidden) != FileAttributes.Hidden) //必须进行与运算,因

.map文件的作用以及在chorme下会报错找不到jquery-1.10.2.min.map文件,404 的原因

source map文件是js文件压缩后,文件的变量名替换对应.变量所在位置等元信息数据文件,一般这种文件和min.js主文件放在同一个目录下. 比如压缩后原变量是map,压缩后通过变量替换规则可能会被替换成a,这时source map文件会记录下这个mapping的信息,这样的好处就是说,在调试的时候,如果有一些JS报错,那么浏览器会通过解析这个map文件来重新merge压缩后的js,使开发者可以用未压缩前的代码来调试,这样会给我们带来很大的方便! 而这种还原性调试功能,目前只有chorme才

Android(java)学习笔记123:Clock app编写报错

1.首先我们二话不说直接先看报错内容如下: 07-12 08:25:03.572: E/dalvikvm(3602): native fork pid:0 done. 07-12 08:25:03.582: E/dalvikvm(3602): threadid=6: created from interp,name=ReferenceQueueDaemon 07-12 08:25:03.582: E/dalvikvm(3602): threadid=6: calling run(),name=R

java.lang.UnsupportedClassVersionError(Unsupported major.minor version 49.0)报错

报错截图如下: 错误信息是由于jar包版本不一致导致,这个49.0是什么呢? JDK不同的版本,编译出的class文件是不同的.通过查看分析class文件前几个字节,可以找到对应的关系,详细的参考官方,细微的版本之间可能有差异: J2SE 7 = 51 (0x33 hex),J2SE 6.0 = 50 (0x32 hex),J2SE 5.0 = 49 (0x31 hex),JDK 1.4 = 48 (0x30 hex),JDK 1.3 = 47 (0x2F hex),JDK 1.2 = 46 (

java中遇到的【for input string: &quot;&quot;】报错问题的解决方案

做Java开发的人,一生至少该有一次或多次遇到[For input String: ""]这样的报错问题,原因通常都是出现在字符串强制转换成数值类型的时候报的错. 比如: String yanggb = ""; int num = Integer.parseInt(yanggb); 这段代码就会报出[For input String: ""]的错误信息. 这个时候的解决办法也很简单,只需要在类型转换的时候做一下空值处理就行了. String ya