[Java]Fragmenter un fichier
pins
-
marbels -
marbels -
Bonjour,
est-ce que quelqu'un pourrait m'indiquer comment se fait la fragmentation d'un fichier .
Merci
est-ce que quelqu'un pourrait m'indiquer comment se fait la fragmentation d'un fichier .
Merci
6 réponses
-
-
-
-
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(); } } }
;-)
-
-
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 ? -
J'ai finalement compris le code et j'ai crée une fonction permettant de recréer le fichier initial.
-
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 -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
-