1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Corta arquivo por tamanho

Amigos, precisando de uma ajudinha, achei essa classe que quebra por tamanho site: enter link description here

ela quebra quando der a certa quantidade já cadastrada até ai blz, só que está cortando a linha do meu arquivo no meio o que está impactando o resto do processo teria como validar criar o novo arquivo quando der o tamanho e estiver no final da linha ai cortaria a partir do inicio da linha

isso seria possivel?

package br.com.montreal.carta.sefaz.negocio;


import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.DecimalFormat;

import com.montreal.comp.entity.formatacao.Formatacao;



public class FileSplitter {

    String fileName;

    public static int BASE = 1024; 
    public static int KB = BASE ;
    public static int MB = KB * BASE; 
    public static int GB = MB * BASE;


    private DecimalFormat df = new DecimalFormat("000");

    public FileSplitter(String fileName) {
        this.fileName = fileName;
    }

    /**
     * 
     * @param tamMegaBytes
     * @param formatacao
     * @param armazenamentoDados
     * @return
     * @throws Exception
     */
    public String sDividirArq(int tamMegaBytes, Formatacao formatacao, String diretorioSaida) throws Exception {

        diretorioSaida = formatacao.getDiretorioProcessamento();


        if (tamMegaBytes < 1  || tamMegaBytes > 500 ){
            throw new Exception("Tamanho a ser dividido deve estar entre 1MB e 500MB");
        }

        /** TRANSFORMA EM MB **/
        tamMegaBytes = tamMegaBytes * MB;


        FileOutputStream fos = null;
        FileInputStream fis = new FileInputStream(this.fileName);

        /** TAMANHO DO BUFFER 1MB PARA ACERTAR NA CONTA DO SPLIT POR MB **/
        byte buffer[] = new byte[MB];

        try {
            int read=0, count = 1, readBuffer = 0;


            while ((read = fis.read(buffer)) != -1) {
                /** GERAR NOVO ARQUIVO DE OUTPUT **/
                if (readBuffer == 0) {
                    /** GERA NOVO NOME **/
                    fos = new FileOutputStream( diretorioSaida + "CARTA_PPI_"+ formatacao.getReferencia() + "_" + df.format(count) + ".DAT" );
                }

                /** SOMA BUFFER LIDO **/
                readBuffer += read;

                /** ESCREVER NO ARQUIVO **/
                fos.write(buffer, 0, read);
                fos.flush();

                /** SE ATINGIR O LIMITE SOLICITADO, CRIAR UM NOVO ARQUIVO **/
                if ( readBuffer >= tamMegaBytes ) {
                    /** ZERA BUFFER PARA CRIAR OUTRO FILE **/
                    readBuffer = 0;

                    /** COLOCA OUTRO NUMERO PARA O FILE    **/
                    ++count;

                    /** FECHA LEITURA DO FILE ANTERIOR **/
                    fos.close();
                }

            }
        } finally {

            try {
                if (fos != null)
                    fos.close();
            } catch (IOException e) {
            }

            try {
                if (fis != null)
                    fis.close();
            } catch (IOException e) {
            }

        }

        return diretorioSaida;

    }


}
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags java arquivos ou faça a sua própria pergunta.