[Java]Fragmenter un fichier

pins -  
 marbels -
Bonjour,

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

Merci
A voir également:

6 réponses

Utilisateur anonyme
 
Salut!

Que veux-tu dire par fragmentation?

Quel type de fichier?

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

Je suppose que tu veux donner une taille maximale au plusieurs fichiers générés?
0
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
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
pins
 
J'ai finalement compris le code et j'ai crée une fonction permettant de recréer le fichier initial.
1
dandoush
 
salut,
est ce que tu pourais nous passer ta fonction pour reconstruir le fichier initial?

Merci en tout cas

Sophia
0
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

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