ファイルオブジェクトを渡す必要があるjarファイルがあります。リソースまたはアセットをそのメソッドにファイル オブジェクトとして渡すにはどうすればよいですか?
プロジェクト フォルダー内のアセットまたは生ファイルをファイル オブジェクトに変換する方法を教えてください。
ファイルオブジェクトを渡す必要があるjarファイルがあります。リソースまたはアセットをそのメソッドにファイル オブジェクトとして渡すにはどうすればよいですか?
プロジェクト フォルダー内のアセットまたは生ファイルをファイル オブジェクトに変換する方法を教えてください。
これが私がしたことです:
アセット ファイルを SDCard にコピーします。
AssetManager assetManager = context.getResources().getAssets();
String[] files = null;
try {
files = assetManager.list("ringtone"); //ringtone is folder name
} catch (Exception e) {
Log.e(LOG_TAG, "ERROR: " + e.toString());
}
for (int i = 0; i < files.length; i++) {
InputStream in = null;
OutputStream out = null;
try {
in = assetManager.open("ringtone/" + files[i]);
out = new FileOutputStream(basepath + "/ringtone/" + files[i]);
byte[] buffer = new byte[65536 * 2];
int read;
while ((read = in.read(buffer)) != -1) {
out.write(buffer, 0, read);
}
in.close();
in = null;
out.flush();
out.close();
out = null;
Log.d(LOG_TAG, "Ringtone File Copied in SD Card");
} catch (Exception e) {
Log.e(LOG_TAG, "ERROR: " + e.toString());
}
}
次に、パスでファイルを読み取ります。
File ringFile = new File(Environment.getExternalStorageDirectory().toString() + "/ringtone", "fileName.mp3");
ほらね。アセット ファイルのファイル オブジェクトのコピーがあります。お役に立てれば。
生ファイルをファイルに読み込む。
InputStream ins = getResources().openRawResource(R.raw.my_db_file);
ByteArrayOutputStream outputStream=new ByteArrayOutputStream();
int size = 0;
// Read the entire resource into a local byte buffer.
byte[] buffer = new byte[1024];
while((size=ins.read(buffer,0,1024))>=0){
outputStream.write(buffer,0,size);
}
ins.close();
buffer=outputStream.toByteArray();
FileOutputStream fos = new FileOutputStream("mycopy.db");
fos.write(buffer);
fos.close();
OutOfMemory を回避するには、次のロジックを適用します。
一度にすべてのデータを含む巨大な ByteBuffer を作成しないでください。はるかに小さい ByteBuffer を作成し、データを入力してから、このデータを FileChannel に書き込みます。次に、ByteBuffer をリセットし、すべてのデータが書き込まれるまで続行します。
私は実際のFile
オブジェクトを取得する方法を知りませんが、FileDescriptor
で作業できる場合は、次のことができます。
FileDescriptor fd = getAssets().openFd(assetFileName).getFileDescriptor();