2
AndroidでProgramABを使用しています。そこに/ bots /ディレクトリを作成してaimlファイルをアセットフォルダから外部ストレージにコピーする必要があります。これは私がthisから得たコードです。このチュートリアルでは、アンドロイドでチャットボットについて教えています(このコードで呼び出される他の関数はディレクトリのコピーとは関係ありません)。アセットフォルダのサブディレクトリを外部ストレージ内の特定のフォルダにコピー
私は他のソリューションを試しましたが、何も私のために働いていませんでした。
//checking SD card availablility
boolean a = isSDCARDAvailable();
//receiving the assets from the app directory
AssetManager assets = getResources().getAssets();
File jayDir = new File(Environment.getExternalStorageDirectory().toString() + "/hari/bots/Hari");
boolean b = jayDir.mkdirs();
if (jayDir.exists()) {
//Reading the file
try {
for (String dir : assets.list("Hari")) {
File subdir = new File(jayDir.getPath() + "/" + dir);
boolean subdir_check = subdir.mkdirs();
for (String file : assets.list("Hari/" + dir)) {
File f = new File(jayDir.getPath() + "/" + dir + "/" + file);
if (f.exists()) {
continue;
}
InputStream in = null;
OutputStream out = null;
in = assets.open("Hari/" + dir + "/" + file);
out = new FileOutputStream(jayDir.getPath() + "/" + dir + "/" + file);
//copy file from assets to the mobile's SD card or any secondary memory
copyFile(in, out);
in.close();
in = null;
out.flush();
out.close();
out = null;
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
//get the working directory
MagicStrings.root_path = Environment.getExternalStorageDirectory().toString() + "/hari";
System.out.println("Working Directory = " + MagicStrings.root_path);
AIMLProcessor.extension = new PCAIMLProcessorExtension();
//Assign the AIML files to bot for processing
bot = new Bot("Hari", MagicStrings.root_path, "chat");
chat = new Chat(bot);
String[] args = null;
mainFunction(args);
'boolean b = jayDir.mkdirs();'。ディレクトリがまだ存在しない場合にのみ、mkdirsを呼び出す必要があります。 mkdirsがfalseを返す場合は、そのことを伝えるユーザーにトーストを表示する必要があります。そして戻る。今あなたは盲目的に続行します。コードを守ってください。 – greenapps
@greenapps私は本当にアンドロイドに新しいですし、私はコピーが実際に起こっているかどうかを確認することさえできません。あなたの記載された問題のためにコードがタスクを実行していませんか? –
あなたは何がうまくいくのか、何がうまくいかないのかを教えてください。ログステートメントとトーストを使用して何が起こるかを確認します。いくつかの基本的なデバッグを行います。 – greenapps