Я попытался реализовать this example для записи и чтения данных из внутреннего хранилища, но когда я пытаюсь читать записанные данные из одного и того же приложения для Android, это не дает мне никакого результата. Какая может быть ошибка? Ниже приведен код, который я использовал.Передача данных с использованием внутреннего хранилища в приложении android
public class SecondScreen extends Activity {
String FILENAME = "hello_file";
String string = "hello world!";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.secondscreen);
//Using the Internal Storage
try{
FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
fos.write(string.getBytes());
fos.close();
}
catch(Exception e){
}
TextView result;
result = (TextView)findViewById(R.id.status);
try{
String test = "";
FileInputStream fis = openFileInput("hello_file");
fis.read(test.getBytes());
fis.close();
result.setText(test);
}
catch(Exception e){
}
}
файл манифеста:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.wrd.ws"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="8" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".ReadWriteDataActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
</manifest>
Обновленный код:
public class ReadWriteDataActivity extends Activity {
TextView tv;
String line;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
writeFileToInternalStorage();
readFileFromInternalStorage();
tv = (TextView) findViewById(R.id.textView);
// tv.setText (линия);
}
private void writeFileToInternalStorage()
{
String eol = System.getProperty("line.separator");
BufferedWriter writer = null;
try
{
File myFile = new File("/sdcard/mysdfile.txt");
myFile.createNewFile();
writer = new BufferedWriter(new OutputStreamWriter(openFileOutput("myFile.txt", MODE_WORLD_WRITEABLE)));
writer.write("This is a test1."+ eol);
writer.write("This is a test2." + eol);
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
if (writer != null)
{
try
{
writer.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
}
private void readFileFromInternalStorage()
{
String eol = System.getProperty("line.separator");
BufferedReader input = null;
try
{
input = new BufferedReader(new InputStreamReader(openFileInput("myFile.txt")));
//String line;
StringBuffer buffer = new StringBuffer();
while ((line = input.readLine()) != null)
{
buffer.append(line + eol);
}
tv.setText(buffer.toString().trim());
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
if (input != null)
{
try
{
input.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
}
Спасибо!
Можете ли вы поместить исключение с помощью исключения для печати? – havexz
Нет сообщений об исключениях. Он работает нормально, но не показывает записанную строку («hello world!») В файл. – Grant
метод write() будет писать в байтовом формате, поэтому вы не можете его прочитать с помощью обычного текстового редактора, например, блокнота @Grant – Lucifer