Ajuda com arquivo

4 respostas
T

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.

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()); 
  		}
  		
  		
  	}
   	   	
   	 
   	
   
    
    
}

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

4 Respostas

kaique

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.

dudaskank

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:

T

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

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)
  			{
  			  	
  				
  			}
  			
  			
  			
  			
  		}
  		
  		
  		
  	}
dudaskank

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…

Criado 5 de maio de 2009
Ultima resposta 5 de mai. de 2009
Respostas 4
Participantes 3