file.write(by)方法:将by.length 个字节从指定 byte 数组by写入此文件输出流file中.
file.write(by,0,len)方法:将指定 byte 数组by中从偏移量 0开始的 len 个字节写入此文件输出流。应用此方法的好处是
我们可以控制写入流中的字节数,因为几乎所有的文件都不可能刚好是1024字节长,当最后一次我们只从输入流中读
取了len字节长的数据时,我们只需要写入len字节长的数据即可将数据全部写完。
你这样用这两个方法的唯一区别是file.write(by)这个每次固定往输出流中写入1024个字节;file.write(by,0,len)每次写入
len长度字节,如附件所示,并不会 出现乱码,至于你说出现乱码能说具体点吗?- package hcy.test.main;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.SequenceInputStream;
- import java.util.Enumeration;
- import java.util.Vector;
- public class Test {
- /**
- * @param args
- * @throws IOException
- */
- public static void main(String[] args) throws IOException { //由于仅作测试,为方便直接抛出IOException
- // TODO Auto-generated method stub
- //建立一个集合,Vector
- Vector<FileInputStream> vt = new Vector<FileInputStream>();
-
- vt.add(new FileInputStream("D:\\ryan.txt"));
- vt.add(new FileInputStream("D:\\ryan1.txt"));
- vt.add(new FileInputStream("D:\\ryan2.txt"));
-
- Enumeration<FileInputStream> en = vt.elements();
-
- //建立一个新的流对象,SequenceInputStream
- SequenceInputStream sis = new SequenceInputStream(en);
-
- FileOutputStream file = new FileOutputStream("D:\\ryan4.txt");
-
- byte[] by = new byte[1024];
-
- int len = 0;
-
- while((len=sis.read(by))!=-1)
- {
- file.write(by);//我直接用这个测试 }
-
- sis.close();
- file.close();
- }
- }
复制代码 三个测试文件:ryan.txt ryan1.txt ryan2.txt 中的内容分别为abc0 abc1 abc2
http://bbs.itheima.com/forum.php?mod=attachment&aid=MzMxM3w5OWM2ODQ5MzQ2MmY5ZjZhNWJiNzEwMTVmM2Q3M2E4YnwxNzMxMzQ2MzA1&request=yes&_f=.png
http://bbs.itheima.com/forum.php?mod=attachment&aid=MzMxMnw2YTc1NTU3Mzg5NDQxMDJkMTkxZTk2OTdjOGVjYjNlMnwxNzMxMzQ2MzA1&request=yes&_f=.png |
|