求助IO流这块的一个demo里面的问题

问题描述

packagecom.lk.example;importjava.io.BufferedInputStream;importjava.io.BufferedOutputStream;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.OutputStream;importjava.io.SequenceInputStream;importjava.util.ArrayList;importjava.util.Enumeration;importjava.util.Iterator;importorg.omg.CORBA.Environment;publicclassSplitFileDemo{publicstaticvoidmain(String[]args)throwsIOException{Filefile=newFile("D:\demo.JPG");FilefileOne=newFile("D:\demo_one.JPG");//splitFile(file);toOne(fileOne);}/*定义一个将单文件切割成多个碎片文件的方法*/publicstaticvoidsplitFile(Filefile)throwsIOException{FileInputStreamfi=newFileInputStream(file);FileOutputStreamfo=null;byte[]buf=newbyte[1024*1024];intcount=0;intlen=0;while((len=fi.read(buf))!=-1){count++;//Stringname=count+".part";fo=newFileOutputStream("D:\"+count+".part");fo.write(buf,0,len);}fi.close();fo.close();}/*定义一个将多个碎片文件转化成一个文件的方法*/publicstaticvoidtoOne(Filefile)throwsIOException{ArrayList<FileInputStream>ne=newArrayList<FileInputStream>();for(intx=1;x<3;x++){ne.add(newFileInputStream("D:\"+x+".part"));}Iterator<FileInputStream>it=ne.iterator();BufferedOutputStreambo=newBufferedOutputStream(newFileOutputStream(file));BufferedInputStreamsq=newBufferedInputStream(newSequenceInputStream(newEnumeration<FileInputStream>(){@OverridepublicbooleanhasMoreElements(){//TODOAuto-generatedmethodstubreturnit.hasNext();}@OverridepublicFileInputStreamnextElement(){//TODOAuto-generatedmethodstubreturnit.next();}}));intco=0;while((co=sq.read())!=-1){bo.write(co);}bo.close();sq.close();}}每次切割都是成功的,但是为何合并的时候,文件总是比原文件要小,而且图片能显示却不完整-。-

解决方案

解决方案二:
for(intx=1;x<3;x++){ne.add(newFileInputStream("D:\"+x+".part"));}这里说明只合并两个文件,所以如果被分割的文件过大,被分割成了超过2个碎片,合成的时候自然变小了。byte[]buf=newbyte[1024*1024];intcount=0;intlen=0;while((len=fi.read(buf))!=-1){count++;//Stringname=count+".part";fo=newFileOutputStream("D:\"+count+".part");fo.write(buf,0,len);}从上面代码看出来如果文件大于2M,将被分割成至少3个碎片
解决方案三:
代码没有问题,问题可能出在for(intx=1;x<3;x++){ne.add(newFileInputStream("D:\"+x+".part"));}你这里写死了是不是少一块另外finalIterator<FileInputStream>it=ne.iterator();内部类引用外部变量,外部变量必须是final的
解决方案四:
你为何不看看for(intx=1;x<3;x++)这个呢?不一定是分割成两个子文件的。

时间: 2024-11-02 16:41:57

求助IO流这块的一个demo里面的问题的相关文章

IO流详解

File是IO操作中,唯一可以代表磁盘本身类,File定义了一些与平台无关的操作方法来操作文件,比如说可以创建和删除文件等等.常用操作方法如下: ·public File(String pathname):构造方法,构造一个有路径的文件(文件夹)目录·public boolean createNewFile()   throws IOException:  创建文件·public boolean delete():  删除文件·public boolean exists():  判断文件是否存在

io流-java面对对象做一个初级的系统

问题描述 java面对对象做一个初级的系统 初级的人事管理系统~~求解人还管理系统的需求,前提是没有数据库,只有java类库和io流 解决方案 姐姐这里有个带论文的带程序的,如果需要的话,采纳了留下你的邮箱哦. 解决方案二: 那么数据存储可以存在文件中而不用数据库啊.

flex-【求助】如何编译运行一个java demo

问题描述 [求助]如何编译运行一个java demo 运行结果如下 如果是一个helloworld的java文件,我编译运行成功过,应该不是环境问题,哪位大神能否帮忙看下?我附上代码链接http://download.csdn.net/detail/zhuifeng20008/9439664 我的问题是如何编译这个demo 解决方案 看了你的源码,主要有如下问题 1.编码问题,解决办法为新建三个一样名字的java文件,将原文件内容复制到新建的文件中 2.代码问题,修改public static

javaee-请教各位大神一个用运用IO流统计英文单词的问题

问题描述 请教各位大神一个用运用IO流统计英文单词的问题 编写程序ListWords.java实现从键盘输入一个英文句子,统计该句子中英文单词的个数, 将找出所有单词存放到一个数组中.例如:He said,"Ths's not a good idea."则输出 为 共有8个单词:He said ths s not a good idea 这是本人自己写的可是不对,求帮看看 import java.io.BufferedReader; import java.io.IOException

javaee-初学者有关IO流统计成绩到另一个文件的问题

问题描述 初学者有关IO流统计成绩到另一个文件的问题 编写一个程序RecordScore.java用来记录某课程的成绩,要求从键盘输入学生姓名和成绩,每行输入一个学生的成绩,输入end#表示输入结束.程序要统计出课程的平均成绩,并将输入的学生成绩和平均成绩保存到soor.txt文件.(提示:字符串的方法 split(" ")可以返回字符串中以空格分割的字符串数组.如str="张三 80";String[] s= str.split(" ");则s

请教一个IO流的File问题

问题描述 请教一个IO流的File问题 package IODemo; import java.io.*; public class java1Test { public static void main(String[] args){ File f=new File("TestFilePRO.java"); File d=new File("Gfei"); System.out.println("f.getName="+f.getName())

IO流详细

 API中IO流的结构图 IO(intput output)流 特点:读写之间没有直接联系,读入数组,从数组写入硬盘 IO流用来处理设备之间的数据传输 Java对数据的操作是通过流的方式 Java用于操作流的对象都在IO包中 流按操作数据分两种:字节流(处理图片等)和字符流(早期只有字节流,字节流能处理所有文件,但是文本文件是很常见的,为了方便所以弄了字符流,内部融合了编码表) 流按流向分为:输入流,输出流(针对内存) IO流常用的基类(大量运用了装饰者模式) 字节流的抽象类     Inp

Java基础-19总结IO流,异常try…catch,throws,File类

1:异常(理解) (1)程序出现的不正常的情况. (2)异常的体系 Throwable |--Error 严重问题,我们不处理. |--Exception |--RuntimeException 运行期异常,我们需要修正代码 |--非RuntimeException 编译期异常,必须处理的,否则程序编译不通过 package cn.itcast_01; /*  * 异常:程序出现了不正常的情况.  *   * 举例:今天天气很好,班长出去旅游.骑着自行车,去山里面呼吸新鲜空气.  *  问题1:

Java---IO加强(3)-IO流的操作规律

一般写关于操作文件的读取的几个通用步骤!!! 1.明确源和目的. 源:InputStream Reader 一定是被读取的. 目的:OutputStream Writer 一定是被写入的. 2.处理的数据是否是纯文本的数据? 是:使用字符流.Reader Writer 否:使用字节流. InputStream OutputStream 到这里,两个明确确定完,就可以确定出要使用哪个体系.接下来,就应该明确具体这个体系要使用哪个具体的对象.(看顶层) 3.明确数据所在的设备. 到这里,具体使用哪个