単純なAndroidアプリケーションを開発していますが、内部ストレージデバイスにテキストファイルを書き込む必要があります。私はこの問題について多くの質問(および回答)があることを知っていますが、私が実際に間違ったやり方で何をしているかを理解することはできません。
これは、ファイルを作成するためにアクティビティで使用するコードです。
public void writeAFile(){
String fileName = "myFile.txt";
String textToWrite = "This is some text!";
FileOutputStream outputStream;
try {
outputStream = openFileOutput(fileName , Context.MODE_PRIVATE);
outputStream.write(textToWrite.getBytes());
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
どちらの間違いをしているのか本当に理解できません。さらに、私はどこで間違っているのかを理解するために、Android Studioと私の電話でエミュレータで this プロジェクトを試しましたが、そのプロジェクトでもファイルは書き込まれません電話またはエミュレーターで。
編集:私は、ファイルに書き込んだ後、次のコードでファイルの内容を読み取ろうとするため、内部ストレージにファイルが書き込まれないことを知っています:
public void ReadBtn(View v) {
//reading text from file
try {
FileInputStream fileIn=openFileInput("myFile.txt");
InputStreamReader InputRead= new InputStreamReader(fileIn);
char[] inputBuffer= new char[READ_BLOCK_SIZE];
String s="";
int charRead;
while ((charRead=InputRead.read(inputBuffer))>0) {
String readstring=String.copyValueOf(inputBuffer,0,charRead);
s +=readstring;
}
InputRead.close();
textmsg.setText(s);
} catch (Exception e) {
e.printStackTrace();
}
}
何も表示されません。
以下のコードを使用して、ファイルを内部ストレージに書き込みます
編集:e.printStackTrace();
を追加して、ブロックを適切な方法としてキャッチし、アクセス許可を思い出させます
public void writeFileOnInternalStorage(Context mcoContext,String sFileName, String sBody){
File file = new File(mcoContext.getFilesDir(),"mydir");
if(!file.exists()){
file.mkdir();
}
try{
File gpxfile = new File(file, sFileName);
FileWriter writer = new FileWriter(gpxfile);
writer.append(sBody);
writer.flush();
writer.close();
}catch (Exception e){
e.printStackTrace();
}
}
マニフェストに外部ストレージの書き込みおよび読み取り権限を追加することを忘れないでください:
<uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission Android:name="Android.permission.READ_EXTERNAL_STORAGE" />
内部ストレージに保存
data="my Info to save";
try {
FileOutputStream fOut = openFileOutput(file,MODE_WORLD_READABLE);
fOut.write(data.getBytes());
fOut.close();
Toast.makeText(getBaseContext(),"file saved",Toast.LENGTH_SHORT).show();
}
catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
内部ストレージから読み取る
try {
FileInputStream fin = openFileInput(file);
int c;
String temp="";
while( (c = fin.read()) != -1){
temp = temp + Character.toString((char)c);
}
tv.setText(temp);
Toast.makeText(getBaseContext(),"file read",Toast.LENGTH_SHORT).show();
}
catch(Exception e){
}
外部ストレージへの書き込み許可をリクエストしましたか?
https://developer.Android.com/training/basics/data-storage/files.html#GetWritePermission
おそらく、try\catchブロックが例外を飲み込んでおり、それが問題の内容を伝えている可能性があります。
また、保存先のパスを設定していないようです。