[Java]Fragmenter un fichier

pins -  
 marbels -
Bonjour,

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

Merci

6 réponses

  1. Utilisateur anonyme
     
    Salut!

    Que veux-tu dire par fragmentation?

    Quel type de fichier?

    ;-)
    HackTrack
    4
    1. pins
       
      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 ...
      0
    2. Utilisateur anonyme
       
      Ok.

      Je suppose que tu veux donner une taille maximale au plusieurs fichiers générés?
      0
    3. Utilisateur anonyme
       
      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();
      		}
      	}
      
      }
      
      


      ;-)
      0
  2. pins
     
    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
  3. pins
     
    J'ai finalement compris le code et j'ai crée une fonction permettant de recréer le fichier initial.
    1
    1. dandoush
       
      salut,
      est ce que tu pourais nous passer ta fonction pour reconstruir le fichier initial?

      Merci en tout cas

      Sophia
      0
  4. angela
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. pins
     
    @dandoush : je mettrai le code que tu souhaites ce week-end.
    1
    1. marbels
       
      J'ai essayé de reconstruir le fichier initial, mais aucun résultat. on peut voir ta fonction?
      0
  7. forthecool
     
    Bonjour,
    slt comment je pourrais fragmenter mon disk dur
    0