Android アプリケーション (Target API 11) でSD カード ストレージへの書き込みを試しています。
「BPAExp_data」と呼ばれる次のコードでディレクトリの作成に成功しましたが、新しいファイルはまったく作成されません。logcatに表示されないので、なぜだろうと困惑しています!!.
これが私の onCreate() メソッドです
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_text_logger);
String data = "asdfghjkl.."
//The filename of the log file
filename = getIntent().getExtras().getString("Filename");
//Save Test data button
Button saveData = (Button)findViewById(R.id.saveDataButton);
saveData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// Save Data in file and go back to home screen
addtoKeyLogFile(data);
//Make intent for the Main Activity screen
Intent main_intent = new Intent(TextLogger.this, MainActivity.class);
startActivity(main_intent);
}
});
これは addKeyLogFile() と呼ばれる私のメソッドです
public void addtoKeyLogFile(String data){
FileOutputStream f = null;
File data_file;
try {
File sdCard = Environment.getExternalStorageDirectory();
File dir = new File (sdCard.getAbsolutePath() + "/BPAExp_data");
dir.mkdirs();
data_file = new File(dir, filename);
f = new FileOutputStream(data_file);
// if file doesn't exists, then create it
if (!data_file.exists()) {
data_file.createNewFile();
Toast.makeText(TextLogger.this, "File GOT CREATED!", Toast.LENGTH_SHORT).show();
}
// get the content in bytes
byte[] dataInBytes = data.getBytes();
f.write(dataInBytes);
f.flush();
f.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
Log.d("TextLogger onCreate: ", e.getMessage());
} catch (IOException e) {
e.printStackTrace();
Log.d("TextLogger onCreate: ", e.getMessage());
} finally {
try {
if (f != null) {
f.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
私は、問題が
f = new FileOutputStream(data_file);
トーストメッセージをその後に置くと実行されませんが、トーストを前に置くと実行されます! また、その後の意図は完全に正常に機能します! しかし、私は理解していません、なぜそれが機能していないのですか?
誰でも提供できる助けをありがとう!