返回列表 发帖

[IT资讯] TOMCAT下JAVA做合成文件的问题

我在TOMCAT下做了文件合成...
第一次合成是正确的...
第二次合成得出来的文件还是第一个...
怎么回事?

程序过程是.我有一个需要合成的数组
遍历一个文件夹下的文件后
根据数组的顺序读取出指定文件合成一个文件输出
第一次合成获取正常
第二次合成出来的是第一个文件
怎么也改变不了...只会出第一个文件

怎么回事?
把方法单独拿出来编译运行时正常的

高手解答

补充一下代码...让大家看看是不是我写错了
  1. public static boolean combine(String dir,Object... params)
  2. {
  3.   String [] ne = new String[params.length];
  4.   for (int pl=0 ; pl < params.length ;pl++ )
  5.   {
  6.    ne[pl] = params[pl].toString();
  7.   }
  8.   //秋像路径地址的文件全部保存到File
  9.   File fileDir = new File(dir);
  10.   //如果该路径存在
  11.   if(fileDir.exists())
  12.   {
  13.    //把路径下所有文件保存到File数组
  14.    File [] files = fileDir.listFiles();
  15.    //合并后的新文件名和路径设置
  16.    File outFile = new File(dir,"show.mp3");
  17.    //创建一个文件输出流
  18.    FileOutputStream fos = null;
  19.    try
  20.    {
  21.     //将一个File对象写入输出流
  22.     fos = new FileOutputStream(outFile);
  23.    }
  24.    catch (FileNotFoundException e1)
  25.    {
  26.     e1.printStackTrace();
  27.     return false;
  28.    }
  29.    //输入流
  30.    FileInputStream fis = null;
  31.    //循环得到文件的数量次数
  32.    for(int a=0 ; a < ne.length ; a++)
  33.    {   
  34.     //找到目录下的所有文件,循环进行读取并保存到新的文件
  35.     try
  36.     {
  37.      for (int i = 0; i < files.length ; i++ )
  38.      {
  39.       if (files[/size][i][size=2].getName().equals(ne[a]))
  40.       {
  41.        NFileUpdata nu = new NFileUpdata();
  42.        nu.CopyFile(files[/size][i][size=2].toString(),"D:/1/"+files[/size][i][size=2].getName());
  43.        System.out.println(ne[a]+"===="+files[/size][i][size=2]);
  44.        //不断把文件写入输入流
  45.        fis = new FileInputStream(files[/size][i][size=2]);
  46.        System.out.println("写入文件="+files[/size][i][size=2]);
  47.        //len是当前文件的长度
  48.        int len = (int) files[/size][i][size=2].length();
  49.        System.out.println("写入文件长度="+len);
  50.        //转为byte类型
  51.        byte [] b = new byte[len];
  52.        System.out.println("byte="+b);
  53.        //读取输入流
  54.        if(fis.read(b, 0, len) != 0)
  55.        {     
  56.         //如果读取成功
  57.         //获取文件名
  58.         String fileName = files[/size][i][size=2].getName();
  59.         //将此文件名转换为一个新的字符数组
  60.         char [] nameChar = fileName.toCharArray();
  61.         byte [] nameByte = new byte[fileName.length()];
  62.         for(int j=0 ; j<nameByte.length ; j++)
  63.         {
  64.          nameByte[j] = (byte)nameChar[j];
  65.         }
  66.         fos.write(b);
  67.        }
  68.       }
  69.      }
  70.     }
  71.     catch (IOException e)
  72.     {
  73.      e.printStackTrace();
  74.      return false;
  75.     }
  76.     finally
  77.     {
  78.      try
  79.      {
  80.       fis.close();
  81.       System.out.println("关闭fis");
  82.      }
  83.      catch (IOException e)
  84.      {
  85.       e.printStackTrace();
  86.       return false;
  87.      }
  88.     }
  89.    }
  90.    try
  91.    {
  92.     System.out.println("开始fos");
  93.     fos.flush();
  94.     System.out.println("fos.flush()");
  95.     fos.close();//一定要关掉
  96.     System.out.println("关闭fos");
  97.    }
  98.    catch (IOException e)
  99.    {
  100.     e.printStackTrace();
  101.     return false;
  102.    }
  103.    return true;
  104.   }
  105.   return false;
  106. }[/size][/i][/i][/i][/i][/i][/i][/i][/i]
复制代码

[ 本帖最后由 241283553 于 2010-6-21 16:47 编辑 ]

TOP

TOP

TOP

TOP

返回列表