euMesmo2 0 Denunciar post Postado Dezembro 9, 2010 Bom, minha duvida é simples: Como passar todo o conteúdo de um arquivo de texto para uma String? To usando o codigo abaixo, mas quebras de linha('\n's e '\r's) não entram para a String. Preciso que a Strig contenha exatamente os mesmos caracteres ASCII do arquivo incluindo quebras de linha e caracteres "não texto". String str; String data=new String(); BufferedReader fileInput = new BufferedReader(new FileReader(new File("arquivo"))); while((str=fileInput.readLine())!=null){ data+=str; } Alguem pode me ajudar? Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
Vergil 15 Denunciar post Postado Dezembro 9, 2010 Primeiro de tudo, não faça concatenação de Strings na leitura do arquivo. Use StringBuilder ou StringBuffer. No caso de arquivos de texto do Windows, a quebra de linha é identificado por \r\n, salvo o engano. Se estivesse lendo apenas de Sistemas que utilizam o \n, bastaria acrescentar um "\n" a cada loop. Ainda assim, você pode colocar todo o conteúdo do arquivo numa String e depois substituir todos os \r\n por \n (método replaceAll de String). Compartilhar este post Link para o post Compartilhar em outros sites
euMesmo2 0 Denunciar post Postado Dezembro 9, 2010 Primeiro de tudo, não faça concatenação de Strings na leitura do arquivo. Use StringBuilder ou StringBuffer. Desculpe a ignorancia de principiante, mas qual a diferença? No caso de arquivos de texto do Windows, a quebra de linha é identificado por \r\n, salvo o engano. Se estivesse lendo apenas de Sistemas que utilizam o \n, bastaria acrescentar um "\n" a cada loop. Ainda assim, você pode colocar todo o conteúdo do arquivo numa String e depois substituir todos os \r\n por \n (método replaceAll de String). Bom, mas no caso, preciso que va para a String exatamente o conteúdo do arquivo, indepedentemente do sistema operacional. Se em um mesmo arquivo tiver casos de '\n' e '\r', ambos vão para a String. Lembrando que o conteúdo do arquivo não é exclusivamente texto, mas preciso que a String contenha cada Byte dos dados não texto. Compartilhar este post Link para o post Compartilhar em outros sites
Vergil 15 Denunciar post Postado Dezembro 10, 2010 As Strings são imutáveis. Ou seja, quando você concatena uma String, você não está na realidade agregando valores a um objeto do tipo String. Strings são imutáveis. Quando você concatena uma String, a JVM cria um outro objeto do tipo String com o valor da antiga mais o novo valor. Dessa forma, se você concatena uma String dez vezes, dez objetos são criados pela JVM. Com StringBuilder e StringBuffer você evita esse problema. A diferença de StringBuilder para StringBuffer é que a segunda é sincronizada. Assim, utilize StringBuffer apenas quando estiver lidando com multiprocessos (threads). Quanto a segunda parte, eu não sei exatamente o que você quer. Mas posso lhe assegurar que do jeito que você está fazendo, lendo linha por linha, todos os \r \n estarão na sua String. E como dito anteriormente, você poderá substituí-los com replace ou replaceAll. Dê uma pesquisada nas classes para manipulação de arquivos. Há várias maneiras de se ler um arquivo. BufferedReader mesmo tem um método read() que retorna um inteiro. Ele lê um caracter por vez como inteiro. Compartilhar este post Link para o post Compartilhar em outros sites