Remover caractere de um arraylist

Ola a todos,

Pessoal eu consigo lê um arquivo txt com essa rotina:

 final java.util.List lines;
 BufferedReader in = new BufferedReader(new InputStreamReader(amp.getInputStream(), "ISO-8859-1"));
           lines.clear();
           String line;
           line = "";
           String a = "";
              for(line = in.readLine(); line != null;
               line = in.readLine())
                    {
                     line.trim();
                     lines.add(line+"\n\r");

                     } 
           in.close();
		System.out.println(lines);

Porem fica saindo umas ,(virgulas) e uns no começo de cada linha como abaixo:

[
, --------------------------------------------
, Realizado na Data: 03/09/2010
, Titulo do Livro: Anatomia humana sistêmica
, e segmentar
, Nr. Registro: 2 - 003
, Data Prev. Devolução: 08/09/2010
, Nome Usuário: FERNANDA CLAUDIA EMERCIANO DA
, SILVA
, Código Usuário: 500
,
,
, ___________________________________________
, Assinatura Usuário
, Obs.Atraso na entrega de livros é cobrado
, uma taxa diária de R$ 1.00 por dia/livro,
, confira antes de assinar, não aceitamos
, reclamações posteriores.
, AMPLUS
, Rua Barão de Aratanha - 51
, Centro - Fortaleza - CE
,
,
, --------------------------------------------
, RECIBO DE EMPRÉSTIMO
]

Alguem pode me dizer faço para remover esses caracteres no inicio de cada linha?

Grato

Antonio

No trecho que line é adicionado no arrayList coloque:

line = line.trim().substring(1); lines.add(line+"\n\r");
O método substring(1) vai ignorar o índice zero da string, que é a primeira letra.

Apareceu esse erro:

Exception in thread "Timer-0" java.lang.StringIndexOutOfBoundsException: String index out of range: -1
        at java.lang.String.substring(String.java:1937)
        at java.lang.String.substring(String.java:1904)
        at acesso.Acesso$1.run(Acesso.java:48)
        at java.util.TimerThread.mainLoop(Timer.java:512)
        at java.util.TimerThread.run(Timer.java:462)

Isto deve estar ocorrendo porque alguma string deve estar vazia, portanto o método substring não encontra o índice 1.

Tente colocar um if para ver se a string não está vazia:

if (!line.isEmpty()) { line = line.trim().substring(1); }

Fiz do jeito que vc disse:

    BufferedReader in = new BufferedReader(new InputStreamReader(amp.getInputStream(), "ISO-8859-1"));
           lines.clear();
           String line;
              for(line = in.readLine(); line != null;
               line = in.readLine())
                  
                    {
                        if (!line.isEmpty()) {
                             line = line.trim().substring(-1);
                        }
                     lines.add(line+"\n\r");

                     } 
           in.close();

erro:

Exception in thread "Timer-0" java.lang.StringIndexOutOfBoundsException: String index out of range: -1
        at java.lang.String.substring(String.java:1931)
        at java.lang.String.substring(String.java:1904)
        at acesso.Acesso$1.run(Acesso.java:48)
        at java.util.TimerThread.mainLoop(Timer.java:512)
        at java.util.TimerThread.run(Timer.java:462)

O erro está no método substring. O parâmetro a ser passado é 1 ao invés de -1. Pois não existe índice negativo na string.

line = line.trim().substring(1);

O mesmo erro. eu tinha colocado -1, para fazer um teste.

Sinceramente não consigo pensar em outra forma. Fiz um teste com o substring e funcionou. Só disparou a exceção quando estava vazia, o que deveria se resolver com o if.

Aqui esta todo meu codigo, eu leio o arquivo remotamente a cada dez segundo e depois envio direto para impressora
só falta formatar esses caracteres.

package acesso;

import java.io.*;
import java.net.*;
import java.util.Timer;
import java.util.TimerTask;


public class Acesso{
    private String JRBeanCollectionDataSource;

        public void Apaga() throws IOException{
        URL url = new URL("http://tst.fateci.com.br/academico/desenvolve/fotos/delete_dados.php");
        URLConnection amp_apaga = url.openConnection();
        InputStream stream = amp_apaga.getInputStream();
        amp_apaga.connect();

    }



public static final long TEMPO = (100 * 60);
    public static void main(String[] args) {
       final java.util.List lines;
       final Acesso ap = new Acesso();
       lines = new java.util.ArrayList();
       Timer timer = null;
         if (timer == null) {
             timer = new Timer();
             TimerTask tarefa = new TimerTask() {
                private FileOutputStream outputFile;
                @SuppressWarnings("static-access")
             public void run() {

try{
    URL amplus = new URL("http://tst.fateci.com.br/academico/desenvolve/fotos/dados.txt");
    URLConnection amp = amplus.openConnection();
    amp.setConnectTimeout(7000);
    amp.connect();
    BufferedReader in = new BufferedReader(new InputStreamReader(amp.getInputStream(), "ISO-8859-1"));
           lines.clear();
           String line;
          
              for(line = in.readLine(); line != null;
               line = in.readLine())
                        if (!line.isEmpty()) {
                             line = line.trim().substring(1);
                        }
                    {

                     lines.add(line+"\n\r");

                     } 
           in.close();

           if(lines.isEmpty()){
           }else{
            /*
           FileOutputStream outputFile = new FileOutputStream("LPT1:");
           PrintWriter out = new PrintWriter(outputFile);
           out.print(lines);
           out.flush();
           outputFile.close();
           out.close();
           */
           System.out.println(lines);
           lines.clear();
           ap.Apaga();
            }

            } catch (MalformedURLException me) {

            } catch (IOException ioe) {

            }
            }  //fechou run

             };  // fechou TimerTask
             timer.scheduleAtFixedRate(tarefa, TEMPO, TEMPO);

            }
         }
    }

Coloque o if dentro do for.

for(line = in.readLine(); line != null; line = in.readLine()) { if (!line.isEmpty()) { line = line.trim().substring(1); } lines.add(line+"\n\r"); }

dá o mesmo erro.

[quote=antoniosales]Ola a todos,

Pessoal eu consigo lê um arquivo txt com essa rotina:

 final java.util.List lines;
 BufferedReader in = new BufferedReader(new InputStreamReader(amp.getInputStream(), "ISO-8859-1"));
           lines.clear();
           String line;
           line = "";
           String a = "";
              for(line = in.readLine(); line != null;
               line = in.readLine())
                    {
                     line.trim();
                     lines.add(line+"\n\r");

                     } 
           in.close();
		System.out.println(lines);

Porem fica saindo umas ,(virgulas) e uns no começo de cada linha como abaixo:

[
, --------------------------------------------
, Realizado na Data: 03/09/2010
, Titulo do Livro: Anatomia humana sistêmica
, e segmentar
, Nr. Registro: 2 - 003
, Data Prev. Devolução: 08/09/2010
, Nome Usuário: FERNANDA CLAUDIA EMERCIANO DA
, SILVA
, Código Usuário: 500
,
,
, ___________________________________________
, Assinatura Usuário
, Obs.Atraso na entrega de livros é cobrado
, uma taxa diária de R$ 1.00 por dia/livro,
, confira antes de assinar, não aceitamos
, reclamações posteriores.
, AMPLUS
, Rua Barão de Aratanha - 51
, Centro - Fortaleza - CE
,
,
, --------------------------------------------
, RECIBO DE EMPRÉSTIMO
]

Alguem pode me dizer faço para remover esses caracteres no inicio de cada linha?

Grato

Antonio[/quote]

O problema é que você está adicionando as linhas lidas em uma lista. Esses colchetes e vírgulas são da implementação de toString() da lista. Ao invés de usar uma lista use um StringBuilder e faça o append de cada linha que dá certo.

Bela observação. Não sabia desse detalhe do toString() da lista.

Valeu mesmo.

Muito obrigado o StringBuilder funcionou direitinho.
ficou assim:

      StringBuilder lines = new StringBuilder();
     for(line = in.readLine(); line != null;
               line = in.readLine())
                {
                  lines.append(line).append("\n\r");
                 }

Até+

Antonio