As coisas são simples, mas não funcionam como deveriam.
Eu tenho um arquivo de texto adicionado como um recurso bruto. O arquivo de texto contém texto como:
b) SE A LEI APLICÁVEL EXIGIR QUALQUER GARANTIA RELATIVA AO SOFTWARE, TODAS ESSAS GARANTIAS SÃO LIMITADAS EM DURAÇÃO A noventa (90) dias a contar da data de entrega.
(c) NENHUMA INFORMAÇÃO OU CONSELHO ORAL OU ESCRITA FORNECIDA POR ORIENTADORES VIRTUAIS, SEUS REVENDEDORES, DISTRIBUIDORES, AGENTES OU FUNCIONÁRIOS CRIARÃO UMA GARANTIA OU DE QUALQUER FORMA AUMENTARÁ O ÂMBITO DE QUALQUER GARANTIA AQUI FORNECIDA.
(d) (somente EUA) ALGUNS ESTADOS NÃO PERMITEM A EXCLUSÃO DE GARANTIAS IMPLÍCITAS, POR ISSO A EXCLUSÃO ACIMA PODE NÃO SE APLICAR A VOCÊ. ESTA GARANTIA CONCEDE DIREITOS LEGAIS ESPECÍFICOS E PODE TAMBÉM TER OUTROS DIREITOS LEGAIS QUE VARIAM DE ESTADO PARA ESTADO.
Na minha tela, tenho um layout como este:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_weight="1.0"
android:layout_below="@+id/logoLayout"
android:background="@drawable/list_background">
<ScrollView android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:id="@+id/txtRawResource"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="3dip"/>
</ScrollView>
</LinearLayout>
O código para ler o recurso bruto é:
TextView txtRawResource= (TextView)findViewById(R.id.txtRawResource);
txtDisclaimer.setText(Utils.readRawTextFile(ctx, R.raw.rawtextsample);
public static String readRawTextFile(Context ctx, int resId)
{
InputStream inputStream = ctx.getResources().openRawResource(resId);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
int i;
try {
i = inputStream.read();
while (i != -1)
{
byteArrayOutputStream.write(i);
i = inputStream.read();
}
inputStream.close();
} catch (IOException e) {
return null;
}
return byteArrayOutputStream.toString();
}
O texto é exibido, mas após cada linha eu recebo um caractere estranho [] Como posso remover esse caractere? Eu acho que é New Line.
SOLUÇÃO DE TRABALHO
public static String readRawTextFile(Context ctx, int resId)
{
InputStream inputStream = ctx.getResources().openRawResource(resId);
InputStreamReader inputreader = new InputStreamReader(inputStream);
BufferedReader buffreader = new BufferedReader(inputreader);
String line;
StringBuilder text = new StringBuilder();
try {
while (( line = buffreader.readLine()) != null) {
text.append(line);
text.append('\n');
}
} catch (IOException e) {
return null;
}
return text.toString();
}
Respostas:
E se você usar um BufferedReader baseado em caracteres em vez de InputStream baseado em bytes?
Não esqueça que
readLine()
pula as novas linhas!fonte
Você pode usar isto:
fonte
Se você usa IOUtils do apache "commons-io", é ainda mais fácil:
Dependências: http://mvnrepository.com/artifact/commons-io/commons-io
Maven:
Gradle:
fonte
Bem, com o Kotlin, você pode fazer isso apenas em uma linha de código:
Ou até mesmo declarar a função de extensão:
E então basta usá-lo imediatamente:
fonte
Em vez disso, faça o seguinte:
Em uma atividade , adicione
ou de um caso de teste , adicione
E observe seu tratamento de erros - não capte e ignore as exceções quando seus recursos existirem ou algo estiver (muito?) Errado.
fonte
openRawResource()
?Esse é outro método que definitivamente funcionará, mas não consigo ler vários arquivos de texto para exibir em várias visualizações de texto em uma única atividade, alguém pode ajudar?
fonte
@borislemke você pode fazer isso de maneira semelhante como
fonte
Aqui vai a mistura de soluções semanais e de Vovodroid.
É mais correto que a solução Vovodroid e mais completo que a solução weekens.
fonte
Aqui está um método simples para ler o arquivo de texto da pasta bruta :
fonte
Aqui está uma implementação no Kotlin
fonte
1.Primeiro, crie uma pasta Diretório e nomeie-a como bruta dentro da pasta res 2.Crie um arquivo .txt dentro da pasta de diretório bruto que você criou anteriormente e atribua um nome, por exemplo ,.articles.txt .... 3. copie e cole o arquivo texto que você deseja dentro do arquivo .txt que você criou "articles.txt" 4. não se esqueça de incluir uma visualização de texto em seu main.xml MainActivity.java
Espero que funcionou!
fonte
fonte