【发布时间】:2014-10-22 03:34:05
【问题描述】:
我想按大小拆分文件数组。我设置的最大大小是 4MB。 如果总大小 List。
这是我的方法:
public List<File> fileSplit(File [] files, long maxAttachmentSize) {
int i = 0;
long totalAttachmentSize = 0;
List<File> list = new ArrayList<File>();
for (int j = 0; j < files.length; j++) {
File file = files[i];
totalAttachmentSize += file.length();
list.add(file);
if (totalAttachmentSize > maxAttachmentSize) {
//part += 1;
break;
}
}
return list;
}
这是我的数组:
String [] attachments = {
"/Users/fanjavaid/Documents/data.json",
"/Users/fanjavaid/Documents/master.psd",
"/Users/fanjavaid/Pictures/ceria.jpg",
"/Users/fanjavaid/Desktop/All Data LM.dsv",
"/Users/fanjavaid/Desktop/LM August 01 - Now.xlsx",
"/Users/fanjavaid/Desktop/Email_GoGreen.png",
"/Users/fanjavaid/Desktop/Archive.zip",
"/Users/fanjavaid/Desktop/Email_Veri2144202172009.zip",
"/Users/fanjavaid/Desktop/Screenshot Collection.zip",
"/Users/fanjavaid/Desktop/logo-big.jpg",
"/Users/fanjavaid/Desktop/Mbak Putri.psd"
};
File [] files = convertToFile(attachments);
Arrays.sort(files, SizeFileComparator.SIZE_COMPARATOR);
.... ....
我这样调用方法:
long maxAttachmentSize = 4194304; // in bytes
List<File> resultSplit = fileSplit(files, maxAttachmentSize);
问题是它没有返回 List 作为一部分。它只是返回所有列表。不是一个个部分分开。 如何处理?
谢谢。
【问题讨论】:
-
请粘贴您的预期输出
-
看在上帝的份上,您将所有文件添加到列表中,您还能期待什么?
-
我的预期结果是,对于电子邮件拆分器。所以我只需要一些包含文件每个部分的列表。 List_1 = file1, file2, file3 ... List_2 = file4, file5... 以此类推,每个 List 不超过最大大小 4MB。
-
您甚至在检查
totalAttachmentSize是否会超过maxAttachmentSize之前添加文件! -
@Neo 我已经检查了这个声明
if (totalAttachmentSize > maxAttachmentSize) { break; }
标签: java arrays arraylist split