public String UploadFileChunkBytes(byte[] Bytes,int Position,String FileName)
throws Exception
{
//"d:\\Server\\Upload\\" 为服务器端路径
String ServerPath = "d:\\Server\\Upload\\";
java.io.RandomAccessFile raf = new java.io.RandomAccessFile(ServerPath + FileName,"rws");
raf.skipBytes(Position);
raf.write(Bytes);
//该 Bytes 的字节要写到 服务器端 相应文件的从 Position 开始的字节
raf.close();
raf = null;
System.gc();
return FileName + " 文件块: 位置[" + Position + "," + (Position + Bytes.length) + "] 大小(" + Bytes.length + ") 上传成功!";
}网上找的一段上传文件的webservice代码,在调用这个方法之前先建立了一个文件总长度的空文件,然后循环调用UploadFileChunkBytes这个方法,分块把文件上传。
我现在要解析这个上传的xml文件,不想再把文件写到磁盘上,直接在内存里解析,能不能把每次上传的byte[]都连接在一起转换为一个inputStream,传给dom4j建立document。

解决方案 »

  1.   

    可以的呀,跟file一样的弄法
    DocumentBuilder builder = factory.newDocumentBuilder();
    document = builder.parse(inputStream);
      

  2.   

    如何得到document我知道。
    问题是能不能把每次上传的byte[]都连接在一起转换为一个inputStream是怎么才能得到这个inputStream
      

  3.   

    把每次上传的byte[]都连接在一起转换为一个inputStream
    -------------
    ByteArrayInputStream(byte[] buf)
      

  4.   


    byte[] bytes ;  //将你的byte[] 连起来.
    ByteArrayInputStream ins = new ByteArrayInputStream(bytes); 
      

  5.   

    第一次的bytes这样byte[] bytes ;  //将你的byte[] 连起来.
    ByteArrayInputStream ins = new ByteArrayInputStream(bytes);第二次怎么写呢?再建立一个ByteArrayInputStream对象??
    还是继续ins,要怎么继续ins呢?
      

  6.   

    byte[] bytes ;  //将你的byte[] 连起来.这个就是把你所有上传的字节连在一起.
    就是在你的所有文件都上传完了,在最后创建一次ByteArrayInputStream对象.
      

  7.   

    上传是分块多次进行的,每次的数据保存在byte[] bytes中,怎么能把没次上传的数据byte[] bytes连接成一个inputStream呢????
      

  8.   

    其实也简单,自己写个类继承InputStream.
    自己实现read()方法,主要就是读完了一块byte[]就把流的指针转向到下一个byte[]
    可以参考BuffedInputStream的写法。