preciso desenvolver 1 compactador quase que do zero, só que nao posso usar os calsses zips do java posi não quero zipar quéro criar 1 arquivo independente, preciso aplicar algumas lógicas desenvolvidas na faculdade, que nao vem ao caso agora
gostaria de saber como ler os bytecodes dos arquivos e apresentalos em algum lugar para que ai sim eu aplique a logica de compactação desenvolvida.
o maximo q consegui fazer foi transformar um arquivo mp3 em txt dai ele apresentou os bytes criptografados, entao eu copiei linha por linha dentro de um array de String.
depois eu analiseis char por char aplicando a logica de compactação e reescrevi. os próprios ja compactados em outro aquivo. que ficou com cerca de 10% o seu tamanho mas quando eu descompactei e ele voltou normal ficou maior do que era e a musica ficou muito rapida, mas abriu.
por que?
Quando transformo qualquer arquivo de qualquer tipo em txt, leio linha por linha e salvo char por char e outro arquivo ele funciona, mas quando eu altero a ordem e volto ao normal não?
Quem quiser se enterar ao projeto me avise preciso de muita ajuda ainda .
aé o projeto é o seguinte
serve para trasferencia de arquivos pela internet. só que ele compila o arquivo as vezes de 1 gb para 10 mb dependendo o tipo do arquivo dai trasferimos o arquivo bem menos e o clienter o descompacta.
Dica: String != array de bytes, e para ler um arquivo binário (por exemplo, um .MP3), você não pode usar FileReader ou BufferedReader, e sim FileInputStream ou RandomAccessFile. Provavelmente você deve ter tido algum problema porque você pegou um arquivo binário e o leu ou gravou como se fosse um arquivo-texto, destruindo alguma coisa de informação.
public class Manipulador {
String[] s = new String[1000000];
String nome ;
Scanner teclado;
public void leitor() throws IOException {
teclado = new Scanner(System.in);
;
this.nome = teclado.nextLine();
InputStream is = new FileInputStream(nome);
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
int str = 0;
String temp = br.readLine();
s[str] = temp;
System.out.println(s[str]);
while (s[str] != null) {
temp = br.readLine();
s[++str] = temp;
System.out.println(s[str]);
}
}
public void gravador() throws IOException {
OutputStream os = new FileOutputStream(this.nome + ".rfc");
OutputStreamWriter osw = new OutputStreamWriter(os);
BufferedWriter bw = new BufferedWriter(osw);
int i = 0;
while (s[i] != null) {
int j = 0;
while (j < s[i].length()) {
bw.write(s[i].charAt(j));
j++;
}
bw.newLine();
i++;
}
bw.close();
}
}
ele cria o arquivo com o .rfc na frente
ou seja copiou caracter por caracter e adiciono o .rcf na frente
se vc retirar o .rcf renomiando o arquivo para.mp3 ele roda normal “ja testei” ta ai para quem quiser testar.
talvez eu tenha errado a logiga de compactar e descompactar vou refazela hoje. mas funciona utilizando qualquer arquivo como txt até mesmo imagem eu usava isso para dar pau em alguns arquivos. ou quando eu estavo sem zip la no win95 e queria levar coisas grandes cortava ele em textos e juntava no arquivo raiz dp.
É eu sei q é coisa de pedreiro so q funcionava e funciona até hoje.
brigado pela ajuda se tiverem mais idéias eu agradeço