菜鸟一枚-------------------------------------------------
包头和包体的形式,多个线程读取分块传输到接收端。
这是每个块的封装
public class FileData {
  private String fileName;
  private long fileLen;
  private byte[] data;  public FileData(String fileName, long fileLen, byte[] data) {
    super();
    this.fileName = fileName;
    this.fileLen = fileLen;
    this.data = data;
  }  public byte[] getData() {
    return data;
  }  public void setData(byte[] data) {
    this.data = data;
  }}这是具体的分块方法
public class FileSplit {
  private DataInputStream currentDis;
  private List<String> filePathList;
  private String currentFileName;
  private long currentFileLen;
  
  public FileSplit(List<String> filePathList) {
    this.filePathList = filePathList;
      for (int i = 0; i < filePathList.size(); i++) {
     try {
       File file = new File(filePathList.get(0));
       currentDis = new DataInputStream(new FileInputStream(file));
       currentFileName = file.getName();
          currentFileLen = file.length();
        } catch (FileNotFoundException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
        }
     }
  }
  
  public FileData get(int len) {
    byte[] b = new byte[len];
    try {
      int l = currentDis.read(b);
      //if read finish change dis
      if (l == -1) {

      }
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    return new FileData(currentFileName, currentFileLen, b);
    
  }
}目前的想法是,我再多封装一个startPos,记录字节读取开始位置,这样接收端解析的时候就知道接收到的块该从哪里开始写入了。现在的疑问是,一个线程执行一次这个方法,我的startPos怎么变化呢,怎么自加呢!