A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 回首、后_街 中级黑马   /  2013-5-2 20:19  /  1969 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 回首、后_街 于 2013-5-5 08:16 编辑

InputStreamReader isr = new InputStreamReader( new FileInputStream( "D:\\11\\1.avi"));
  char[] buf = new char[1024*1024];//1024*1024等于1M
  int len=0;
  int count=1;
  while((len=isr.read(buf))!=-1){
   OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("D:\\1\\"+(count++)+".suipian"));
   osw.write(buf, 0, len);
   osw.close();
  }
  isr.close();
  System.out.println("切割成功 ");

运行该程序......为什么运行出来的程序不是以1M切割呢?切割出来的文件分为1.35M每个文件 为什么?

评分

参与人数 1技术分 +1 收起 理由
HM汪磊 + 1

查看全部评分

7 个回复

倒序浏览
char[]   你把char[] 换成    byte[]
回复 使用道具 举报
jinhu358 发表于 2013-5-4 17:40
char[]   你把char[] 换成    byte[]

换成byte无法定义缓冲区。。。
回复 使用道具 举报
如果是字符流的话, 你定义的缓冲数组是char类型的, char类型占用2 - 4个字节, 你改成字节流就可以解决你的问题了, 看下面的代码
import java.io.*;
class Test1 {
        public static void main(String[] args) throws Exception {
                //将输入流定义为字节输入流
                FileInputStream fis =  new FileInputStream( "D:\\11\\1.avi");
                //定义一个字节缓冲数组, 你原来的字符数组每个字符可能是2个字节, 所以大于1m
                byte[] buf = new byte[1024*1024];//1024*1024等于1M
                int len=0;
                int count=1;
               
               

                while((len=fis.read(buf))!=-1){
                //将输出流定义为字节输出流, 用于写出输入流的数据
                FileOutputStream fos = new FileOutputStream("D:\\1\\"+(count++)+".suipian");
                fos.write(buf, 0, len);
                fos.close();
           }
           fis.close();
           System.out.println("切割成功 ");
        }
}
回复 使用道具 举报
回首、后_街 发表于 2013-5-4 18:35
换成byte无法定义缓冲区。。。

字符流当然不能定义成字节流的缓冲区了
回复 使用道具 举报
原因可能是     InputStreamReader 和 OutputStreamWriter 都是操作字符用的,你这里的文件时avi格式,属于字节。  你试着用BufferedInputStream和buffOutputStream 他俩可以用于操作字节     
回复 使用道具 举报

如果问题解决请再次编辑,修改为已解决,若还有疑问,请继续追问
回复 使用道具 举报
breeze 发表于 2013-5-4 18:58
如果是字符流的话, 你定义的缓冲数组是char类型的, char类型占用2 - 4个字节, 你改成字节流就可以解决你的 ...

谢谢   。。。。问题解决了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马