Java 如果超过最大限制,则拆分文件数组

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<

我想按大小拆分文件数组。我设置的最大大小是4MB。
如果总大小假设没有文件大于最大大小,则可以执行此操作

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;
}