Java 如果超过最大限制,则拆分文件数组
我想按大小拆分文件数组。我设置的最大大小是4MB。Java 如果超过最大限制,则拆分文件数组,java,arrays,arraylist,split,Java,Arrays,Arraylist,Split,我想按大小拆分文件数组。我设置的最大大小是4MB。 如果总大小假设没有文件大于最大大小,则可以执行此操作 public List<List<File>> fileSplit(File [] files, long maxAttachmentSize) { long totalAttachmentSize = 0; List<List<File>> allLists = new ArrayList<>(); List<
如果总大小假设没有文件大于最大大小,则可以执行此操作
public List<List<File>> fileSplit(File [] files, long maxAttachmentSize) {
long totalAttachmentSize = 0;
List<List<File>> allLists = new ArrayList<>();
List<File> currList = new ArrayList<File>();
allLists.add(currList);
for (File file : files) {
long fileSize = file.length();
if ((totalAttachmentSize + fileSize) <= maxAttachmentSize) {
currList.add(file);
totalAttachmentSize += fileSize;
} else {
totalAttachmentSize = fileSize;
currList = new ArrayList<File>();
allLists.add(currList);
currList.add(file); // assuming no file is bigger than maxAttachmentSize
}
}
return allLists;
}
公共列表fileSplit(文件[]个文件,长maxAttachmentSize){
长totalAttachmentSize=0;
List allLists=new ArrayList();
List currList=new ArrayList();
alllist.add(currList);
用于(文件:文件){
long fileSize=file.length();
如果((totalAttachmentSize+文件大小)请粘贴您的预期输出看在上帝的份上,您将所有文件添加到列表中,您还期望什么?我的预期结果是,对于电子邮件拆分器。因此,我只需要一些包含所有文件部分的列表。列表_1=file1,file2,file3…列表_2=file4,file5…等等,每个列表都不超过最大大小4MB。您正在添加文件ev在检查totalAttachmentSize
是否会超过maxAttachmentSize
之前,我已经检查了这条语句if(totalAttachmentSize>maxAttachmentSize){break;}
只是一个观察:我想fanjavaid希望标准是正确的
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);
public List<List<File>> fileSplit(File [] files, long maxAttachmentSize) {
long totalAttachmentSize = 0;
List<List<File>> allLists = new ArrayList<>();
List<File> currList = new ArrayList<File>();
allLists.add(currList);
for (File file : files) {
long fileSize = file.length();
if ((totalAttachmentSize + fileSize) <= maxAttachmentSize) {
currList.add(file);
totalAttachmentSize += fileSize;
} else {
totalAttachmentSize = fileSize;
currList = new ArrayList<File>();
allLists.add(currList);
currList.add(file); // assuming no file is bigger than maxAttachmentSize
}
}
return allLists;
}