2010-09-30 156 views

回答

0

你使用什么API来进行文件加载?

1)如果FileConnection API可以按块加载数据。在这种情况下没有问题。

2)如果你使用Class.getResourceAsStream(String pathInsideJar),你会遇到问题。在将控制权返回给您的代码之前,大多数KVM会充分加载资源。所以我看到了一种方法 - 在创建jar之前将大文件分割成几个小文件。

+0

嗨,感谢您的回复,我正在使用FileConnection API。你能否给我一个示例代码。当我上传一个大文件到Web应用程序时出错。 – 2010-10-01 04:39:28

0

DataInputStream dis = FileConnection.getDataInputStream();

byte [] buffer = new byte [2048];

int count;

int total = 0;

Vector v = new Vector();

ByteArrayOutputStream baos = new ByteArrayOutputStream();

而((计数= dis.read(缓冲液))> = 0)

{

总+ =计数;

baos.write(buffer,0,count);

如果(总> 100000)

{

baos.close(); 

byte[] data = baos.toByteArray(); 

v.addElement(data); 

baos = new ByteArrayOutputStream(); 
} 

}

所以,你将有几个字节数组的载体。你可以一个一个发送。

或者将所有文件数据读入一个字节数组,并将这些数据按发送数据的移位开始位置进行部分发布。