我有一个功能可以将存储在资产中的jpeg复制到SD卡中。它有效,但非常慢。 averg文件大小约为600k。有一个更好的方法吗, 代码:
void SaveImage(String from, String to) throws IOException {
// opne file from asset
AssetManager assetManager = getAssets();
InputStream inputStream;
try {
inputStream = assetManager.open(from);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return;
}
// Open file in sd card
String extStorageDirectory = Environment.getExternalStorageDirectory().toString();
OutputStream outStream = null;
File file = new File(extStorageDirectory, to);
try {
outStream = new FileOutputStream(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
return;
}
int c;
while ((c = inputStream.read()) != -1) {
outStream.write(c);
}
outStream.close();
inputStream.close();
return;
}
答案 0 :(得分:2)
一次读写多个字符。 16KB可能是一个合理的缓冲区大小,但可以随意进行实验。
答案 1 :(得分:0)
您应该尝试使用Buffer
进行阅读和写作
课程BufferedInputStream
和BufferedOutputStream
InputStream inputStream;
BufferedInputStream bis;
try {
inputStream = assetManager.open(from);
bis = new BufferedInputStream(inputStream);
} catch (IOException e) {
...
...
try {
outStream = new BufferedOutputStream(new FileOutputStream(file));
} catch (FileNotFoundException e) {
...
...
while ((c = bis.read()) != -1) {
...
}
...
...
bis.close();
祝你好运