まずは、ディレクトリの作成から。
public boolean mkdir(String path){
File file = new File(path);
return file.mkdir();
}
pathに"/sdcard/testdir"を渡して実行。
結果は、ディレクトリが作成されずにmkdirがfalseで復帰されました。
原因が分からずいろいろ調べてみると、SDK1.6からSDカード書込みのパーミッション(アクセス権)が
必要になったとの記事を発見。というわけで、マニフェストファイルに以下の記述を追加すると
上手くディレクトリの作成ができました。
(ちゃんとドキュメント読めってことですね)
<uses-permission androidname="android.permission.WRITE_EXTERNAL_STORAGE"/>
ちなみに、mkdir()は、既に同名のディレクトリ、ファイルがある場合は失敗となります。
mkdir()のほかにmkdirs()というメソッドがあります。
mkdir()が単一ディレクトリを作成するメソッドに対し、mkdirs()はパスで指定した階層を
作成してくれるメソッドだそうです。(まだ実際に試してません)
次に、ファイルの作成ですが、ディレクトリと同じようにソースを書くと
コンパイラに怒られてしまいました。
createNewFile()メソッドのインタフェースは以下のようになっています。
public boolean createNewFile() throws IOException
この"
throws IOException”という記述があるメソッドを使用する場合、
例外が発生する可能性があるので必ず例外処理をしなければなりません。
今回は例外が発生した場合は適当な処理(エラーを出力するだけ)として
以下のようなコードを書いて実行してみました。
public boolean mkfile(String path){
File file = new File(path);
try{
return file.createNewFile();
}catch(IOException e){
System.out.println(e);
return false;
}
}
createNewFile()もmkdir()と同様に既に同名のディレクトリ、ファイルがある場合は失敗となります。
さて、新規作成ができるようになったので今度はファイル操作かな?
PR