Manejo de arquivos com JSP

Neste explicaremos basicamente a leitura, modificação e escritura de arquivos de texto. Para isto construiremos a classe FileManager que, através de seus métodos, permitirá executar tais operações.

Por Fernando Arturi


Publicado em: 10/11/06

Valorize este artigo:
Os comentários escritos dentro do código, explicam passo a passo que coisa está sendo executada em cada momento.

  • A função readFile, dado um nome de arquivo (com o "caminho" incluído. Ex. D:\files\prova.txt), devolve um objeto de tipo StringBuffer com o conteúdo do mesmo.
  • O método saveFile , toma como primeiro parâmetro o nome do arquivo que se deseja gerar ou modificar, o segundo parâmetro é o conteúdo que se deseja introduzir no tal arquivo. Por fim, o terceiro parâmetro é uma variável do tipo boolean, que se recebe o valor "true" , agrega a informação recebida no final do arquivo (si este arquivo existir). Se, em troca, recebe "false" como parâmetro, apaga o conteúdo atual do arquivo e o substitui com o segundo parâmetro.
  • Finalmente a terceira função serve para buscar um ou mais valores dentro de um arquivo de uma cadeia de texto e substitui-los por uma série de valores dados.

    Por exemplo, poderia ser usado deste modo:

    String[] busca = {"NOME","SOBRENOME"};
    String[] substituo = {"FERNANDO","ARTURI"};
    FileManager fm = new FileManager();
    String resultado = fm.replaceValues("D:\myFiles\prova.txt", busca, substituo);

A seguir o código da classe:

package notas;

import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.FileNotFoundException;

/**
* <p>Title: FileManager</p>
*
* <p>Description: Manejo de arquivos de texto</p>
*
* <p>Copyright: Copyright (c) 2006</p>
*
* @author Fernando Arturi
* @version 1.0
*/

public class FileManager {

public void FileManager(){}

   /**
   * O metodo readFile le um arquivo de texto e retorna seu conteudo em
    * formato de StringBuffer
   * @param filename String
    * @return StringBuffer
   */

public StringBuffer readFile(String filename){
   StringBuffer sb = new StringBuffer();
   try{
       /**
      * Aqui criamos um objeto File que representa o arquivo de texto que
       * queremos ler
       */
       File file = new File(filename);

      /**
       * Variavel temporaria que usaremos para ler cada uma das linhas do
       * arquivo de texto
       */
      String line = null;

      /**
       * BufferReader - Eh o encarregado de ler o arquivo de texto.
      * O construtor recebe como parametro um objeto FileReader, que
       * a s vez recebe o objeto File criado precedentemente.
       */

      BufferedReader br = new BufferedReader(new FileReader(file));

      /**
       * Atraves deste ciclo o BufferReader le todo o arquivo, e vai acumulando (sb.append) em um StringBuffer
       */
       while ((line = br.readLine()) != null) {
         sb.append(line);
       }

      /**
      * No final da leitura fechamos o objeto
      */
      br.close();

    } catch (FileNotFoundException fnfe){
       /**
      * Se damos um nome de arquivo que nao existe o sistema gera automaticamente um erro.
       */
          System.out.println("Nao foi possivel encontrar o arquivo "+ filename);
   }
   catch (IOException ioe){
      /**
       * Foi produzido um erro durante a leitura do arquivo
      */
       System.out.println("Foi produzido um erro durante a leitura do arquivo "+ filename);
    }
   return sb;
}

/**
* Este metodo permite, dada uma cadeia de caracteres determinada,
* salvar a mesma como um arquivo de texto, ou agrega-la a um arquivo ja existente
*
* @param filename String
* @param dataToWrite String
* @param append boolean
*/
public void saveFile(String filename, String dataToWrite, boolean append) {
   try {
       /**
       * Criacao do objeto FileWriter dado um nome de arquivo determinado
       * O segundo parametro (append) contem um valor booleano que
       * indica se a informacao recebida deve ser agregada no final do
      * arquivo ou, caso contrario, substituir a informacao ja
      * existente.
       */
      FileWriter fw = new FileWriter(filename, append);

      /**
       * Escritura da informacao no arquivo
       */
       fw.write(dataToWrite);

      /**
       * fecha-se o arquivo
       */
      fw.close();
   } catch (IOException ioe) {
       /**
       * Foi produzido um erro durante a leitura/escritura do arquivo
       */
      System.out.println(
          "Foi produzido um erro durante a leitura do arquivo " + filename);
    }
}


/**
* Esta funcao permite, dado um arquivo em particular, buscar dentro o mesmo
* determinados valores e muda-los por uma serie de novos valores dados,
* gerando um objeto de tipo String com o resultado
*
* @param path String
* @param valuesToSearch String[] Ejemplo {"NOME", "SOBRENOME"}
* @param valuesToReplace String[] Ejemplo {"Fernando Augusto", "Arturi"}
* @return String
*/
public String replaceValues (String path, String [] valuesToSearch, String [] valuesToReplace){
String line;
StringBuffer textComplete = new StringBuffer();
String tempText = "";

/**
* Leitura do arquivo de texto dado
*/
try {
    BufferedReader br = new BufferedReader(new FileReader(path));
   while ((line = br.readLine()) != null){
       textComplete.append(line);
   }
   br.close();

} catch (FileNotFoundException fnfe){
    /**
    * Se damos um nome de arquivo que nao existe o sistema
    * gera automaticamente um erro.
    */
    System.out.println("Nao foi possivel encontrar o arquivo "+ filename);
}

catch (IOException ioe) {
   /**
    * foi produzido um erro durante a leitura/escritura do arquivo
   */
   System.out.println(
       "Foi produzido um erro durante a leitura do arquivo " + filename);
}

/**
* Uma vez completada a fase de leitura do arquivo, passamos a
* busca e substituicao dos valores dados.
* Para isto geramos um ciclo que percorremos tantas vezes como valores
* que tivermos que processar.
*/
for (int i=0; i<valuesToSearch.length; i++){
    int position = textComplete.indexOf(valuesToSearch[i]);
   if (position>0 ){
      tempText = textComplete.substring(0,position);
       /**
       * busca e substituicao da cadeia.
       */
      tempText = tempText + valuesToReplace[i] + textComplete.substring(position+valuesToSearch[i].length(),textComplete.length());
       textComplete = new StringBuffer(tempText);
   }
  }
  return tempText;
}

}






Usuários :    login / registro
Manuais relacionados
Categorias relacionadas
O autor

Buscar projetos:

Home | Sobre nós | Copyright | Anuncie | Entrar em contato