GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Gravar arquivo no android


#1

como eu gravo arquivo txt no android?

tenho um arquivo no asset que eu consigo ler, mas eu tenho que ediitar esse arquivo as vezes.... Mesmo se eu colocar na pasta res/raw tenho a mesma dificuldade

to fazendo assim

         [code]
         String xml = xstream.toXML(obj);             
         FileOutputStream fos = null;
     fos = openFileOutput("que caminho eu coloco aqui?"+"/t.txt", Context.MODE_PRIVATE);			
     fos.write(xml.getBytes());
     fos.close();
         [/code]

tentei usar isso:

 "/data/data/"+ getPackageName() +"/files/t.txt"

, mas nao funciona

vlw


#2

Primeiro, qual a Exception?

Segundo, você tem certeza que os arquivos colocados em res/raw ou res/assets vão para essa pasta que voce está acessando?

Terceiro, voce tem as permissões necessarias para escrever?

	<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
	<uses-permission android:name="android.permission.WRITE_OWNER_DATA" />
	<uses-permission android:name="android.permission.READ_OWNER_DATA" />

#3

não tinha as permisssoes..

o arquivo esta na asset, mas eu não sei que caminho colocar kra... to procurando na net, mas so acho exemplo que coloca apenas o nome do arquivo.. e isso nao funciona

tentei de novo, agora colocando as permissoes, mas deu erro:

06-28 19:10:47.644: ERROR/AndroidRuntime(696): java.lang.IllegalArgumentException: File file:///android_asset/t.txt contains a path separator

acho que esse caminho esta errado: file:///android_asset/

qual o caminho que eu coloco la pra indicar a pasta assets?


#4

Na verdade, eu também nunca procurei onde os arquivos dos assets vão.

Mas ter acesso pelo nome não serve mesmo? Pra que voce precisa do diretorio completo?


#5

eu passei apenas o nome do arquivo:

fos = openFileOutput("t.txt", Context.MODE_PRIVATE);           
fos.write(xml.getBytes());  
fos.close();

não deu erro. Eu debeguei e ele gravou, mas na onde ele grava isso? EU procurei no meu projeto todo e nao encontrei o arquivo. E o arquivo ja existente la na pasta assets nao foi atualizado. Se ele gravar em outra pasta, nao tem problema nenhum, só tenho q saber aonde ele grava isso.


#6

É, eu também não sei onde ele grava essas coisas, se alguem descobrir podia postar, se não eu procuro amanhã.


#7

entao, por ignorancia minha eu nao conhecia o FileExplorer do DDMS Android.

como visualizar os arquivos atraves da perspectiva DDMS do android no Eclipse:

entre em : window/ showView/ other/ FileExplorer

la vai ter todas as pastas que o emulador utiliza. Se vc seguir o caminho /data/data/br.com.seuPaconte/files/ pelo FileExplorer, vai achar todos os arquivos que vc salvou. No FileExplorer tb vc pode importar e exportar arquivos pra la nos botoes que ficam no canto superior direito.

meu codigo ficou assim:

gravação do arquivo:

      [code]String xml = xstream.toXML(objetoArquivo);             
       FileOutputStream fos = null;
       fos = openFileOutput("arquivo.xml", Context.MODE_WORLD_WRITEABLE);			
   fos.write(xml.getBytes());
   fos.close();[/code]

leitura do arquivo:

           [code]InputStream arquivo = new FileInputStream ("/data/data/br.com.sofftware.panico/files/arquivo.xml");
           objetoArquivo = (ObjetoArquivo) xstream.fromXML(arquivo);[/code]

vlw


#8

Eu já conhecia o File Explorer do DDMS, mas eu nunca tinha procurado onde aparece os arquivos do assets.


#9

para pegar o caminho do arquivo em android

public static String filePath(String fileName) {
       return Environment.getDataDirectory()+"/"+fileName;
   }

#10

Também estou passando por esse problema.

O "openFileOutput... " e permissões, funcionaram bem no emulador, porém no aparelho android não ocorre nada, nem trava.

Como eu faço para criar um txt com um conteúdo qualquer no diretório "mnt/sdcard/download", por exemplo? ou em qualquer outro diretório que possa ser acessado fora do programa desenvolvido??


#11

vc pode pegar Environment.getExternalStorageDirectory()
alguns table "chines" vem como udisk1
mas nao esqueça as permissões
android:name="android.permission.WRITE_EXTERNAL_STORAGE"


#12

Uhm... Ainda não consegui utilizar...
Poderia, por favor colocar um exemplo funcional?


#13

tente isto

public void salvarArquivoStringXML(String dados){
		FileOutputStream fos;
		try{
			fos = context.openFileOutput("string.xml", Context.MODE_APPEND);
			fos.write(dados.getBytes());
			fos.flush();
			fos.close();
		} catch (Exception e) {
		}
	}

#14

nesse caso, o txt vai ser salvo em qual diretório do android?
"mnt/sdcard"? não é necessário mais nada?
Porque quando eu tinha testado a txt era salvo em uma pasta "data/data/files"(se eu não me engano).

Outra coisa...
no projeto pra serve a res/raw e a res/assets?
Eu criei uma pasta res/raw, nem sei pra que.

Valeu (vou tentar adaptar seu código e testar)


#15

o context não deu certo no eclipse
fos = context.openFileOutput("string.xml", Context.MODE_APPEND);

=/


#16