ma2@脳出血です。お世話になります。
以前、(No.29820)でアプリ以外のファイルの作成について質問しました。
以前は内部にファイルを作ろとしていました。
色々あり外部のmicroSDでの作成をするコードを作ることにしました。
が、またハマりましたorz
長い間、独りであれこれ考えていたので、判らなくなってしまいました。
皆さんで、見てもらえるとありがたいです。
関係している部分を以下に抜粋します。
1.
AndroidManifest.xml に追加
> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
2.
MainActivity.java(抜粋)
---
package com.example.ma2.weightscale;
public class MainActivity extends Activity implements OnClickListener {
・
・
・
//! ファイル操作 ------------------------------------------------------------------------------
static private final String FILE_NAME = "test.txt"; //"weightscale.csv";
//!
public boolean isExternalStorageWritable() {
String state = Environment.getExternalStorageState();
if( state.equals( Environment.MEDIA_MOUNTED ) ){
// if( Environment.MEDIA_MOUNTED.equals( state ) ){
Log.d( "ma2:", "isExternalStorageWritable: true" );
return true;
}
return false;
}
//!
public boolean isExternalStorageReadable() {
String state = Environment.getExternalStorageState();
if( Environment.MEDIA_MOUNTED.equals( state ) || Environment.MEDIA_MOUNTED_READ_ONLY.equals( state )) {
return true;
}
return false;
}
protected void onDateFileWrite_Test01( String fileName ) {
Log.d( "ma2:", "onDateFileWrite_Test01" );
File file = new File( context.getExternalFilesDir( null ), fileName );
Log.d( "ma2:", " -> File: " + file );
if( isExternalStorageWritable() == true ){
try {
// boolean n;
// n = file.getParentFile().mkdirs();
if( !file.getParentFile().exists() && !file.getParentFile().mkdirs() ){
Log.d( "ma2:", " -> Unable to create " + file.getParentFile() );
}
else{
Log.d( "ma2:", " -> getParentFile(): " + file.getParentFile() );
}
FileWriter fw = new FileWriter( file );
// Log.d( "ma2:", " -> n=" + n );
Log.d( "ma2:", " -> " + file );
Log.d( "ma2:", " -> " + "test" );
fw.write( "test" );
// fw.flush();
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
protected void onDateFileWrite_Test02( String fileName ) {
Log.d( "ma2:", "onDateFileWrite_Test02" );
File file = new File( context.getExternalFilesDir( null ), fileName );
Log.d( "ma2:", " -> File: " + file );
FileOutputStream fos = null;
OutputStreamWriter osw = null;
BufferedWriter bw = null;
if( isExternalStorageWritable() == true ){
try {
// boolean n;
// n = file.getParentFile().mkdirs();
if( !file.getParentFile().exists() && !file.getParentFile().mkdirs() ){
Log.d( "ma2:", " -> Unable to create " + file.getParentFile() );
}
else{
Log.d( "ma2:", " -> getParentFile(): " + file.getParentFile() );
}
// Log.d( "ma2:", " -> n=" + n );
fos = new FileOutputStream( file );
osw = new OutputStreamWriter( fos, "UTF-8" );
bw = new BufferedWriter( osw );
Log.d( "ma2:", " -> " + file );
Log.d( "ma2:", " -> " + "test" );
bw.write( "test" );
// bw.flush();
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
・
・
・
}
3.
現状、onDateFileWrite_Test01、onDateFileWrite_Test02どちらでもファイルは作られません。
getExternalFilesDirをEnvironment.DIRECTORY_PICTURESなどにするとフォルダは作られます。
以上。よろしくお願いします。