外部ストレージ上のファイルに書き込むために、次のコードを記述しました。
public static BufferedWriter out;
private void createFileOnDevice(Boolean append) throws IOException {
File Root = Environment.getExternalStorageDirectory();
Log.d("File",Root.toString());
Root.setWritable(true);
Root.setReadable(true);
Log.d("File","Writable: " + Root.canWrite());
if(Root.canWrite()){
File LogFile = new File(Root, "/Android/DriverInterfaceSystem");
if(!LogFile.mkdirs()){
Log.d("File","Couldn't make directories");
}
LogFile = new File(LogFile, "/trace.txt");
Log.d("File",LogFile.toString());
try{
FileWriter LogWriter = new FileWriter(LogFile, true);
LogWriter.write("--- New Record ---");
out = new BufferedWriter(LogWriter);
} catch(IOException e){
Log.d("File","FileWriter failed");
}
out.write("New record");
}
}
マニフェストの権限をに設定しましたWRITE_EXTERNAL_STORAGE
。
FileWriterとBufferedWriterの両方を持つことは冗長であることを私は知っていますが、それが機能しないのはそれらの1つだけであるかどうかをテストしていました。
実行すると、ファイルは正しい場所に作成されますが、プログラムは「-New Record-」または「NewRecord」のいずれかをファイルに書き込むことを拒否し、ファイルは空になります。
ファイルが作成されていることを考えると、本当に簡単な手順が1つ欠けているように見えますが、それを見ることができれば気になります。何かご意見は?