1- Desenvolva um programa em Java para dividir um arquivo em várias partes.O programa deverá
ler o nome do arquivo a ser dividido e qual o tamanho máximo para cada parte (em bytes). As
partes a serem geradas deverão possuir o nome original do arquivo (sem a extensão) seguido de
uma extensão seqüencial com três dígitos. Por exemplo: o arquivo a ser dividido tem o nome de
?fonte.Java? e possui 100 bytes, o usuário decidiu que quer dividir o arquivo em partes de no
máximo 30bytes cada. O programa deve gerar os seguintes arquivos: ?fonte.001? com 30bytes;
?fonte.002? com 30bytes; ?fonte.003? com 30 bytes e ?fonte.004? com 10bytes.
[code]import java.util.*;
public class numeroum {
public static void main (String args[])
{
RandomAccessFile arq;
try
{
arq = new RandomAccessFile ("dados.txt","rw");
}
catch(IOException e)
{
System.out.println("Problemas: "+e.toString());
}
}
}[/code]
por enquanto foi o que consegui fazer… criar um arquivo… mas nao sei como prosseguir… imagino que que devo percorrer o arquivo até um certo ponto, por exemplo, 30bytes e colocar essa parte em outro arquivo… estou mt perdido nessa parte… por favor me ajudem
Uma maneira de realizar isso seria ler, byte a byte, o arquivo desejado. Daí, você vai criando os demais arquivos utilizando os bytes do primeiro. Dá uma pesquisada na API do Java sobre FileInputStream e FileOutputStream. Acho que é o necessário para resolver o seu problema.
Exatamente isso. Acredito que isso seja uma lição, então seu professor já deve ter passado o conceito básico e você não está conseguindo encaixá-lo aqui…
Bem, para manipular um arquivo do modo que foi pedido, não será preciso usar essa classe, pois você pode ler ele em sequência mesmo, sem precisar ir e vir.
ele falou da classe file e RandomAccessFile… dessas ai ele nao falou… estou tentando algo assim… mas nao sei como gerar os arquivos automaticamente dependendo do tamanho
[code]import java.util.*;
public class numeroum {
public static void main (String args[])
{
RandomAccessFile arq;
RandomAccessFile arq2;
Scanner leitor = new Scanner (System.in);
int num,i,val,calc;
try
{
arq = new RandomAccessFile ("dados.txt","rw");
}
catch(IOException e)
{
System.out.println("Problemas: "+e.toString());
}
System.out.printf("\nInforme o tamanho de cada parte em bytes: ");
num = leitor.nextInt();
calc = arq.length() / num; // tam do arq 100 / 2 = 50 cada arq
for (i = 0; i < arq.length();i++)
{
byte readByte(i); //lendo byte a byte
if (i == calc)
{
}
}
}
[/code]
Bem, o arq, que você vai ler, não precisa ser no modo “rw”, basta o “r” de leitura.
Essa classe RandomAccessFile também tem métodos de leitura e escrita.
Você tem que fazer uma lógica que, a cada tantos bytes, você fecha o arquivo anterior e cria um novo… esse “cada tantos” acho que você consegue usando o operador % (mod ou resto). Quando você divide um número por outro e o resto dele for 0, no caso quando o i % numeroDeBytesPorParte der 0, você fecha o que estiver aberto (se estiver) e abre outro com o mesmo nome mais uma extensão com o número da parte.