Ajuda com arquivo

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.

As classes que você pode usar são:

FileInputStream
FileOutputStream
File

No FileInputStream tem o read e no FileOutputStream o write, que lê e escreve os bytes passados… aí o resto é com você né :wink:

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.

Poxa agora ficou fácil hein hehehehe…