Android FileInputStream read() txt file to String
Any experts available to help me? In my Android main activity, I'm trying to save a String to a file and then retrieve it if the user has set it before. Wasn't able to find any examples close to what I am doing. I would most appreciate any help! Here is my test case that crashes:
String testString = "WORKS";
String readString;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
FileOutputStream fos;
try {
fos = openFileOutput("test.txt", Context.MODE_PRIVATE);
fos.write(testString.getBytes());
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
File file = getBaseContext().getFileStreamPath("test.txt");
if (file.exists()) {
FileInputStream fis;
try {
fis = openFileInput("test.txt");
fis.read(readString.getBytes());
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
txtDate.setText(String.valueOf(readString));
} else {
// more code
}
}
}
For reading file try this:
FileInputStream fis;
fis = openFileInput("test.txt");
StringBuffer fileContent = new StringBuffer("");
byte[] buffer = new byte[1024];
while ((n = fis.read(buffer)) != -1)
{
fileContent.append(new String(buffer, 0, n));
}
Try something like this
public void writeData ( String data ) {
try {
FileOutputStream fOut = openFileOutput ( "settings.dat" , MODE_WORLD_READABLE ) ;
OutputStreamWriter osw = new OutputStreamWriter ( fOut ) ;
osw.write ( data ) ;
osw.flush ( ) ;
osw.close ( ) ;
} catch ( Exception e ) {
e.printStackTrace ( ) ;
}
}
public String readSavedData ( ) {
StringBuffer datax = new StringBuffer("");
try {
FileInputStream fIn = openFileInput ( "settings.dat" ) ;
InputStreamReader isr = new InputStreamReader ( fIn ) ;
BufferedReader buffreader = new BufferedReader ( isr ) ;
String readString = buffreader.readLine ( ) ;
while ( readString != null ) {
datax.append(readString);
readString = buffreader.readLine ( ) ;
}
isr.close ( ) ;
} catch ( IOException ioe ) {
ioe.printStackTrace ( ) ;
}
return datax.toString() ;
}
Less is more;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tvText = (TextView) findViewById(R.id.tvText);
try {
// Create File and Content
String FILE_NAME = "hallo.txt";
String content = "Hallo Welt!";
FileOutputStream fos = openFileOutput(FILE_NAME, MODE_PRIVATE);
fos.write(content.getBytes());
fos.close();
// Read File and Content
FileInputStream fin = openFileInput(FILE_NAME);
int size;
String neuText = null;
// read inside if it is not null (-1 means empty)
while ((size = fin.read()) != -1) {
// add & append content
neuText += Character.toString((char) size);
}
// Set text to TextView
tvText.setText(neuText);
} catch (Exception error) {
// Exception
}
}
}