2016-06-28 4 views
0

В настоящее время я пытаюсь реализовать небольшой инструмент, который создает .torrent из набора файлов внутри папки. Он работает отлично для отдельных файлов.Как создать торрент-файл с несколькими файлами в Java?

В соответствии с этим сайтом: Torrent_file несколько файлов хранятся внутри набора файлов.

Вот что я сделал до сих пор:

public Map<Object, Object> getFiles(File dict) throws IOException, NoSuchAlgorithmException { 

    Map<Object, Object> files = new HashMap<Object, Object>(); 
    FileOutputStream fos = new FileOutputStream(merged); 

    for (File fileEntry : dict.listFiles()) 
    { 
     if (fileEntry.isFile()) 
     { 
      Map<String, Object> file = new HashMap<String, Object>(); 
      file.put("path", fileEntry.getName()); 
      file.put("length", fileEntry.length()); 

      FileInputStream fis = new FileInputStream(fileEntry); 
      byte[] byteArray = new byte[(int) fileEntry.length()]; 
      fis.read(byteArray, 0, (int) fileEntry.length()); 
      fos.write(byteArray); 
      fos.flush(); 
      files.put(file.get("path"), file.get("length")); 
     } 

    } 
    fos.close(); 
    pieces = hashPieces(merged, pieceLength); 
    return files; 
} 

Я пытаюсь создать карту для каждого отдельного файла, а затем поместить эти карты в другую карту, содержащую файлы. Затем я объединяю файлы как массивы файлов в один большой файл для вычисления хэш-элементов. Однако часть файловой структуры не работает так, как предполагалось.

Метод для нескольких файлов вызывается:

// ... 
    Map<String, Object> info = new HashMap<String, Object>(); 
    info.put("name", sharedFile.getName()); 
    if (sharedFile.isDirectory()) { 
     Map<Object, Object> path = getFiles(sharedFile); 
     info.put("files", path); 
    } 
    // ... 

Как-то я не знаю, как собрать список файлов. Я знаю, что это нужно делать с картой, но я отчаянно желаю, чтобы я выбирал ее как ключ и ценность.

+0

Wikipedia - ужасный источник технической информации о протоколе BitTorrent. Вместо этого попробуйте https://wiki.theory.org/BitTorrentSpecification#Metainfo_File_Structure. – Encombe

ответ

0

Значение под значком files на информационной карте - это не карта, это список карт, в которых каждая карта описывает один файл.

 Смежные вопросы

  • Нет связанных вопросов^_^