- 浏览: 222785 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
junzi2013:
df
黑马程序员:MyEclipse9 常用快捷键 中英文对照 及 快速get set方法 -
junzi2013:
dfsdafadsfsd
黑马程序员:MyEclipse9 常用快捷键 中英文对照 及 快速get set方法 -
idealab:
博主说的OpenCSV, JavaCSV, SuperCSV都 ...
csv调研 -
tanxin:
楼主怎么解决这个问题的呢?
坑爹的zookeer -
yy22258867:
:twisted:
黑马程序员19-7:foreach遍历核心源码,遍历HashMap需要用map.keySet()或map.entrySet()
package cn.itcast.io.p1.splitfile; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.SequenceInputStream; import java.util.ArrayList; import java.util.Collections; import java.util.Enumeration; import java.util.Properties; public class MergeFile { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { File dir = new File("c:\\partfiles"); mergeFile_2(dir); } //根据配置文件合并分割文件 public static void mergeFile_2(File dir) throws IOException { /* * 获取指定目录下的配置文件对象。 */ //自定义扩展名过滤器,实现了FilenameFilter File[] files = dir.listFiles(new SuffixFilter(".properties")); if(files.length!=1) throw new RuntimeException(dir+",该目录下没有properties扩展名的文件或者不唯一"); //记录配置文件对象。 File confile = files[0]; //获取该文件中的信息================================================。 Properties prop = new Properties(); FileInputStream fis = new FileInputStream(confile); prop.load(fis); String filename = prop.getProperty("filename"); int count = Integer.parseInt(prop.getProperty("partcount")); //获取该目录下的所有碎片文件。 ============================================== File[] partFiles = dir.listFiles(new SuffixFilter(".part")); if(partFiles.length!=(count-1)){ throw new RuntimeException(" 碎片文件不符合要求,个数不对!应该"+count+"个"); } //将碎片文件和流对象关联 并存储到集合中。 ArrayList<FileInputStream> al = new ArrayList<FileInputStream>(); for(int x=0; x<partFiles.length; x++){ al.add(new FileInputStream(partFiles[x])); } //将多个流合并成一个序列流。 Enumeration<FileInputStream> en = Collections.enumeration(al); SequenceInputStream sis = new SequenceInputStream(en); FileOutputStream fos = new FileOutputStream(new File(dir,filename)); byte[] buf = new byte[1024]; int len = 0; while((len=sis.read(buf))!=-1){ fos.write(buf,0,len); } fos.close(); sis.close(); } public static void mergeFile(File dir) throws IOException{ ArrayList<FileInputStream> al = new ArrayList<FileInputStream>(); for(int x=1; x<=3 ;x++){ al.add(new FileInputStream(new File(dir,x+".part"))); } Enumeration<FileInputStream> en = Collections.enumeration(al); SequenceInputStream :x sis = new SequenceInputStream(en); FileOutputStream fos = new FileOutputStream(new File(dir,"1.bmp")); byte[] buf = new byte[1024]; int len = 0; while((len=sis.read(buf))!=-1){ fos.write(buf,0,len); } fos.close(); sis.close(); } }
package cn.itcast.io.p1.splitfile; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.Properties; /* * 文件切割器。 * * * * */ public class SplitFileDemo { private static final int SIZE = 1024 * 1024; /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { File file = new File("c:\\aa.mp3"); splitFile_2(file); } private static void splitFile_2(File file) throws IOException { // 用读取流关联源文件。 FileInputStream fis = new FileInputStream(file); // 定义一个1M的缓冲区。 byte[] buf = new byte[SIZE]; // 创建目的。 FileOutputStream fos = null; int len = 0; int count = 1; /* * 切割文件时,必须记录住被切割文件的名称,以及切割出来碎片文件的个数。 以方便于合并。 * 这个信息为了进行描述,使用键值对的方式。用到了properties对象 * */ Properties prop = new Properties(); File dir = new File("c:\\partfiles"); if (!dir.exists()) dir.mkdirs(); while ((len = fis.read(buf)) != -1) { fos = new FileOutputStream(new File(dir, (count++) + ".part")); fos.write(buf, 0, len); fos.close(); } //将被切割文件的信息保存到prop集合中。 prop.setProperty("partcount", count+""); prop.setProperty("filename", file.getName()); fos = new FileOutputStream(new File(dir,count+".properties")); //将prop集合中的数据存储到文件中。 prop.store(fos, "save file info"); fos.close(); fis.close(); } public static void splitFile(File file) throws IOException { // 用读取流关联源文件。 FileInputStream fis = new FileInputStream(file); // 定义一个1M的缓冲区。 byte[] buf = new byte[SIZE]; // 创建目的。 FileOutputStream fos = null; int len = 0; int count = 1; File dir = new File("c:\\partfiles"); if (!dir.exists()) dir.mkdirs(); while ((len = fis.read(buf)) != -1) { fos = new FileOutputStream(new File(dir, (count++) + ".part")); fos.write(buf, 0, len); } fos.close(); fis.close(); } }
package cn.itcast.io.p1.splitfile; import java.io.File; import java.io.FilenameFilter; public class SuffixFilter implements FilenameFilter { private String suffix; public SuffixFilter(String suffix) { super(); this.suffix = suffix; } @Override public boolean accept(File dir, String name) { return name.endsWith(suffix); } }
详细请查看:http://edu.csdn.net/heima -------
发表评论
-
Java中的IO整理完整版
2013-02-15 17:23 704http://developer.51cto.com/art/ ... -
Myeclipse中导入zip文件查看源代码
2012-09-21 23:35 1055用Myeclipse的时候,出现无法查看源码的话,导入jdk文 ... -
==与equals
2012-09-13 20:15 654一般基本数据类型的比较用 == 当涉及到对象、字符串的时候,就 ... -
多线程课程002:线程范围内的共享变量
2012-09-13 16:47 955package cn.itcast.heima2; ... -
多线程课程001:线程安全的问题
2012-09-13 14:37 812下面的做法,会发现输出结果被打断了。 package co ... -
多线程课程001:线程安全的问题
2012-09-13 11:14 794package com.lee.thread; pu ... -
内部类的实际应用
2012-09-13 11:01 666public class TraditionalThreadS ... -
Java接口
2012-09-11 12:07 765Java接口的方法只能是抽象的和公开的,Java接口不能有构造 ... -
移位运算符
2012-09-11 09:31 844移位运算符 <<左移 a<<b,a转 ... -
【总结】gridbaglayout布局管理器
2012-08-15 11:19 692http://blog.sina.com.cn/s/blog_ ... -
【练习_00010】java不重复随机数
2012-08-14 01:26 698package com.heima.test; impo ... -
【练习】判断一个字符串中某些字段出现的次数
2012-08-14 01:08 973package com.heima.test; im ... -
选择、冒泡、折半排序查找方法
2012-08-13 15:06 1217import java.util.Arrays; i ... -
自己写的杨辉三角
2012-08-12 16:41 806package com.lee.graphic; p ... -
交换两个数的位置,不用中间变量
2012-08-06 02:28 1113a ^= b; b ^= a; a ^= b; 1 ... -
未解问题,定时器无法自定义切换时间
2012-07-30 18:08 1009package com.heima.test004.enu ... -
黑马程序员:设计模式,享元模式flyweight
2012-07-23 02:13 0如果有很多很小的东西,对象,当他们有很多属性是相同的,就可以把 ... -
黑马程序员:for综合图形整合结晶
2012-07-23 01:16 801package Graph; public clas ... -
JS: js获取字符串长度
2012-07-20 18:01 0<SCRIPT LANGUAGE="Jav ... -
传智27-2: 模拟Tocat浏览器,写网页蜘蛛爬虫,抓取网页信息
2012-07-12 17:03 0package cn.itcast.net.p2.ie_s ...
相关推荐
Java IO(Input/Output)是Java编程语言中用于处理输入和输出操作的重要组成部分。...在实际应用中,可以根据需求选择合适的流类型,以及利用过滤流进行功能扩展。注意,处理完流后,记得关闭流以释放资源。
FilterInputStream 和 FilterOutputStream 是两个重要的抽象类,它们作为输入流和输出流的过滤器,可以用来扩展或修改流的功能。通过继承这两个类并重写特定方法,开发者可以创建自定义的过滤流,以实现特殊的数据...
在Java的IO体系中,Input和Output主要涉及流(Stream)的概念,流是处理输入和输出的基本方式。流分为两种类型:以字节为导向的流和以Unicode字符为导向的流。 1.1 以字节为导向的流 这些流主要用于处理以8位字节为...
- SequenceInputStream:合并多个输入流,按顺序读取。 - LineNumberInputStream:记录并提供行号的输入流。 - DataInputStream:增加了读取基本数据类型(如int、float)的方法。 除了InputStream,还有...
- **知识点总结**:在Java中,`java.util.SequenceInputStream`类用于将多个`InputStream`对象合并成一个单独的`InputStream`对象。这使得可以从多个输入源读取数据,如同它们是从单个输入源读取的一样。 #### 系统...
4. **序列流** - `SequenceInputStream`: 用于合并多个输入流。 5. **对象序列化流** - `ObjectInputStream` 和 `ObjectOutputStream`: 用于对象的序列化和反序列化。 6. **字节流** - `InputStream`: 输入流基类。...
将多个读取流合并成一个读取流,可以方便操作多个读取流。原理(迭代器)。 OutputStream |--FileOutputStream/:文件输出流。用于将写入File和FileDescriptor的输出流。用来操作图像,声音,视频等原始字节流。 ...
在Java编程语言中,输入/输出(Input/Output,简称IO)流是处理数据传输的核心概念,用于在程序与外部设备、文件系统或其他程序之间进行数据交换。Java提供了丰富的IO流类库,使得数据的读写操作变得既灵活又强大。...
Java中的IO流是Java核心库的重要组成部分,它用于在不同数据源之间传输数据。Java IO流分为两大类:字符流(Character Stream)和字节流(Byte Stream)。字符流处理单个字符,而字节流处理8位的字节序列。它们又...
在Java编程语言中,处理多个文件的读写是一项常见的任务,尤其在大数据处理、文件合并或数据迁移等场景中。为了高效地管理多个文件,Java提供了多种类和接口,允许我们方便地操作多个文件。本篇文章将深入探讨如何...
- **读取/写入**:根据流的类型,从输入流读取数据或将数据写入输出流。 - **关闭流**:当数据处理完成后,关闭流以释放资源。 #### Java I/O流分类 Java I/O流分为两大类: 1. **面向字节的流**:这类流以8位...
- `SequenceInputStream`:可以将多个输入流合并成一个输入流。 - **输出流**:向目标端写入字节数据。主要类包括: - `ByteArrayOutputStream`:将数据写入内存数组。 - `FileOutputStream`:将数据写入文件。 ...
- **序列流**:`SequenceInputStream`用于合并多个输入流。 - **对象序列化流**: - `ObjectInputStream`:读取并还原序列化的对象。 - `ObjectOutputStream`:将对象序列化写入文件或其他输出流。 #### 四、字节...
在Java中,输入和输出操作通过流(Stream)进行,这些流分为字节流和字符流两大类,每类又包含输入流和输出流。 **字节流** 字节流处理的是8位的字节数据,它主要用于处理二进制数据,如图像、音频文件等。Java的...
- `SequenceInputStream`:将多个`InputStream`合并为一个流。 - **OutputStream**:用于写入字节数据。 - `ByteArrayOutputStream`:在内存中收集数据。 - `FileOutputStream`:将数据写入文件。 - `...
例如,如果想要实现数据缓存的功能,可以利用这些过滤器类来扩展原有的流。 ##### 2.2 FilterInputStream的子类 - **DataInputStream**:从流中读取基本类型数据,如`int`、`char`等。 - **BufferedInputStream**...
在实际开发中,SequenceInputStream常用于需要一次性处理多个数据源的情况,比如合并日志文件、合并多部分的配置文件等。通过熟练掌握SequenceInputStream,开发者可以更高效地进行数据处理和文件操作。
java 中实现切割文件和合并文件的功能主要用于将大文件切割成小文件碎片,以便于文件传输和存储,或者将小文件碎片合并成一个大文件。下面详细介绍 java 实现切割文件和合并文件的功能相关知识点。 一、切割文件 ...
- `SequenceInputStream`: 可以将多个输入流连接成一个连续的流。 #### 四、总结 Java IO系统通过提供丰富的类层次结构,为开发者处理输入输出操作提供了强大的工具。通过对这些类的理解和应用,可以更加高效地...