有专家可以帮助我吗?在我的Android主要活动中,我正在尝试将String保存到文件中,然后在用户之前设置它时检索它。无法找到任何接近我正在做的事情的例子。我非常感谢任何帮助!这是我崩溃的测试用例:
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
}
}
}
答案 0 :(得分:62)
对于阅读文件,试试这个:
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));
}
答案 1 :(得分:36)
尝试这样的事情
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() ;
}
答案 2 :(得分:2)
少即是多;
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
}
}
}