[Java]Fragmenter un fichier

Bonjour,

est-ce que quelqu'un pourrait m'indiquer comment se fait la fragmentation d'un fichier .

Merci

6 réponses

  1. Salut!

    Que veux-tu dire par fragmentation?

    Quel type de fichier?

    ;-)
    HackTrack
    1. Par fragmenter, je veux dire découper un fichier en plusieurs fragments (ou bouts).
      Des fichiers "simples" pas de gros fichier style vidéo, etc ...
    2. Ok.

      Je suppose que tu veux donner une taille maximale au plusieurs fichiers générés?
    3. Salut!

      Il sera nécessaire d'un peu l'améliorer, mais le plus gros est fait...

      import java.io.BufferedReader;
      import java.io.BufferedWriter;
      import java.io.File;
      import java.io.FileReader;
      import java.io.FileWriter;
      import java.io.IOException;
      import java.util.ArrayList;
      import java.util.List;
      /**
      * FileSplitter.java by HackTrack
      */
      public class FileSplitter {
      	private static File destDir;
      
      	public static File[] splitFile(String filePath, long maxSize, String toDir)
      			throws IOException {
      		handleToDir(toDir);
      		File[] splittedFiles;
      		List<File> files = new ArrayList<File>();
      		BufferedReader reader = new BufferedReader(new FileReader(filePath));
      		String fileName = new File(filePath).getName();
      		StringBuffer fileContent = new StringBuffer();
      		String line;
      		File currentFile = FileSplitter.createSplittedFile(fileName, files
      				.size());
      		while ((line = reader.readLine()) != null) {
      			fileContent.append(line);
      			if (fileContent.length() >= maxSize) {
      				FileSplitter.writeFile(currentFile, fileContent.toString());
      				files.add(currentFile);
      				fileContent = new StringBuffer();
      				currentFile = FileSplitter.createSplittedFile(fileName, files
      						.size());
      			}
      		}
      		FileSplitter.writeFile(currentFile, fileContent.toString());
      		files.add(currentFile);
      
      		splittedFiles = new File[files.size()];
      		int c=0;
      		for (File file : files) {
      			splittedFiles[c] = files.get(c);
      			c++;
      		}
      		return splittedFiles;
      	}
      
      	private static void handleToDir(String toDir) {
      		destDir = new File(toDir);
      		if (destDir.exists())
      			destDir.delete();
      		destDir.mkdir();
      	}
      
      	private static File createSplittedFile(String fileName, int index)
      			throws IOException {
      		return File.createTempFile(new File(fileName).getName() + "_" + index,
      				".spf", destDir);
      	}
      
      	private static void writeFile(File destFile, String content)
      			throws IOException {
      		BufferedWriter writer = new BufferedWriter(new FileWriter(destFile));
      		writer.write(content);
      		writer.flush();
      		writer.close();
      		writer = null;
      	}
      
      	public static void main(String[] args) {
      		try {
      			// 1048576 = 1Mo
      			System.out.println(FileSplitter.splitFile("D:/huge.txt", 1048576,
      					"D:/testSplit").length
      					+ " files generated");
      		} catch (IOException e) {
      			e.printStackTrace();
      		}
      	}
      
      }
      
      


      ;-)
  2. Merci pour le code.
    Est-ce que tu pourrais m'expliquer ce que tu as fait car je n'ai pas tout compris.
    De plus, avec ce que tu as codé, est-il possible d'identifier les morceaux en vue de reconstruire le fichier initial ?
    1. J'ai finalement compris le code et j'ai crée une fonction permettant de recréer le fichier initial.
      1. salut,
        est ce que tu pourais nous passer ta fonction pour reconstruir le fichier initial?

        Merci en tout cas

        Sophia
    2. Salut,

      est-ce que quelqu'un pourrait m'indiquer comment modifier le code pour les fragments nommées (avec comme fichier de départ Author.java) :
      Author.java_0 Author.java_1 Author_2 et non
      Author.java_04313.spf Author.java_14314.spf Author.java_24314.spf comme c'est le cas avec ce code

      Merci
      1. @dandoush : je mettrai le code que tu souhaites ce week-end.
        1. J'ai essayé de reconstruir le fichier initial, mais aucun résultat. on peut voir ta fonction?

      Discussions similaires

      question pix mot caché

      7 réponses