//Writing a file... try{// catches IOException belowfinalString TESTSTRING =newString("Hello Android");/* We have to use the openFileOutput()-method
* the ActivityContext provides, to
* protect your file from others and
* This is done for security-reasons.
* We chose MODE_WORLD_READABLE, because
* we have nothing to hide in our file */FileOutputStream fOut = openFileOutput("samplefile.txt",
MODE_PRIVATE);OutputStreamWriter osw =newOutputStreamWriter(fOut);// Write the string to the file
osw.write(TESTSTRING);/* ensure that everything is
* really written out and close */
osw.flush();
osw.close();//Reading the file back.../* We have to use the openFileInput()-method
* the ActivityContext provides.
* Again for security reasons with
* openFileInput(...) */FileInputStream fIn = openFileInput("samplefile.txt");InputStreamReader isr =newInputStreamReader(fIn);/* Prepare a char-Array that will
* hold the chars we read back in. */char[] inputBuffer =newchar[TESTSTRING.length()];// Fill the Buffer with data from the file
isr.read(inputBuffer);// Transform the chars to a StringString readString =newString(inputBuffer);// Check if we read back the same chars that we had written outboolean isTheSame = TESTSTRING.equals(readString);Log.i("File Reading stuff","success = "+ isTheSame);}catch(IOException ioe){ioe.printStackTrace();}
Postanowiłem napisać zajęcia z tego wątku, które mogą być pomocne dla innych. Zauważ, że obecnie jest to przeznaczone do zapisywania tylko w katalogu "pliki" (np. Nie zapisuje do ścieżek "sdcard").
import java.io.BufferedReader;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import android.content.Context;publicclassAndroidFileFunctions{publicstaticString getFileValue(String fileName,Context context){try{StringBuffer outStringBuf =newStringBuffer();String inputLine ="";/*
* We have to use the openFileInput()-method the ActivityContext
* provides. Again for security reasons with openFileInput(...)
*/FileInputStream fIn = context.openFileInput(fileName);InputStreamReader isr =newInputStreamReader(fIn);BufferedReader inBuff =newBufferedReader(isr);while((inputLine = inBuff.readLine())!=null){
outStringBuf.append(inputLine);
outStringBuf.append("\n");}
inBuff.close();return outStringBuf.toString();}catch(IOException e){returnnull;}}publicstaticboolean appendFileValue(String fileName,Stringvalue,Context context){return writeToFile(fileName,value, context,Context.MODE_APPEND);}publicstaticboolean setFileValue(String fileName,Stringvalue,Context context){return writeToFile(fileName,value, context,Context.MODE_WORLD_READABLE);}publicstaticboolean writeToFile(String fileName,Stringvalue,Context context,int writeOrAppendMode){// just make sure it's one of the modes we supportif(writeOrAppendMode !=Context.MODE_WORLD_READABLE
&& writeOrAppendMode !=Context.MODE_WORLD_WRITEABLE
&& writeOrAppendMode !=Context.MODE_APPEND){returnfalse;}try{/*
* We have to use the openFileOutput()-method the ActivityContext
* provides, to protect your file from others and This is done for
* security-reasons. We chose MODE_WORLD_READABLE, because we have
* nothing to hide in our file
*/FileOutputStream fOut = context.openFileOutput(fileName,
writeOrAppendMode);OutputStreamWriter osw =newOutputStreamWriter(fOut);// Write the string to the file
osw.write(value);// save and close
osw.flush();
osw.close();}catch(IOException e){returnfalse;}returntrue;}publicstaticvoid deleteFile(String fileName,Context context){
context.deleteFile(fileName);}}
Sprawdziłem twój kod, ale jest kilka poleceń, które są przestarzałe dla nowego API (17): Context.MODE_WORLD_READABLE i Context.MODE_WORLD_WRITEABLE wymagają zmiany.
Victor Gil
4
Oprócz przestarzałych bitów - musisz ostatecznie zamknąć i nie musisz spłukiwać przed zamknięciem. Nie wysyłaj niechlujnego kodu
Mr_and_Mrs_D
4
Zapisz do pliku test.txt:
String filepath ="/mnt/sdcard/test.txt";FileOutputStream fos =null;try{
fos =newFileOutputStream(filepath);byte[] buffer ="This will be writtent in test.txt".getBytes();
fos.write(buffer,0, buffer.length);
fos.close();}catch(FileNotFoundException e){
e.printStackTrace();}catch(IOException e){
e.printStackTrace();}finally{if(fos !=null)
fos.close();}
Odpowiedzi:
Stąd: http://www.anddev.org/working_with_files-t115.html
źródło
flush
wcześniej zadzwonićclose
?flush
jest zbędny. Zgodnie z dokumentacją, wezwanieclose
będzie miałoflush
pierwszeństwo. docs.oracle.com/javase/6/docs/api/java/io/…Użyłem następującego kodu, aby utworzyć plik tymczasowy do zapisu bajtów. I działa dobrze.
źródło
Postanowiłem napisać zajęcia z tego wątku, które mogą być pomocne dla innych. Zauważ, że obecnie jest to przeznaczone do zapisywania tylko w katalogu "pliki" (np. Nie zapisuje do ścieżek "sdcard").
źródło
Zapisz do pliku test.txt:
Odczytaj z pliku test.txt:
Uwaga: nie zapomnij dodać tych dwóch uprawnień w pliku AndroidManifest.xml
źródło