拷貝assets內(nèi)容到安卓手機

  1. 新建一個Android Studio項目。
  2. 在main文件夾下爱沟,新建assets文件夾癣疟,得到app/src/main/assets。把需要拷貝的文件復(fù)制/粘貼到其中惕虑。
    我這里放了2個文件坟冲,01.jpg和02.jpg磨镶。
  1. 在AndroidManifest.xml中溃蔫,授予 寫外部存儲 的權(quán)限。
    在<application>外加入:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  1. 修改MainActivity.java文件琳猫。
package ai.nixie.copyassets;

/*

Copy all the files in assets folder to your smartphone

From: app/src/main/assets
To:   /sdcard/Android/data/packageName/files/

*/

import android.content.res.AssetManager;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        copyAssets();

    }

    private void copyAssets() {
        AssetManager assetManager = getAssets();
        String[] files = null;
        try {
            files = assetManager.list("");
        } catch (IOException e) {
            Log.e("tag", "Failed to get asset file list.", e);
        }
        if (files != null) for (String filename : files) {
            InputStream in = null;
            OutputStream out = null;
            try {
                in = assetManager.open(filename);
                File outFile = new File(getExternalFilesDir(null), filename);
                out = new FileOutputStream(outFile);
                copyFile(in, out);
            } catch(IOException e) {
                Log.e("tag", "Failed to copy asset file: " + filename, e);
            }
            finally {
                if (in != null) {
                    try {
                        in.close();
                    } catch (IOException e) {
                        // NOOP
                    }
                }
                if (out != null) {
                    try {
                        out.close();
                    } catch (IOException e) {
                        // NOOP
                    }
                }
            }
        }
    }
    private void copyFile(InputStream in, OutputStream out) throws IOException {
        byte[] buffer = new byte[1024];
        int read;
        while((read = in.read(buffer)) != -1){
            out.write(buffer, 0, read);
        }
    }
}
  1. 驗證伟叛。
    開命令行,adb shell進入手機脐嫂,可以在/sdcard/Android/data/包名/files/目錄中统刮,找到我們要拷貝的文件。
  1. 幾個常用的目錄
String sdcardPath = Environment.getExternalStorageDirectory().getAbsolutePath().toString();
Log.d(TAG, "getExternalStorageDirectory: " + sdcardPath);
// getExternalStorageDirectory: /storage/emulated/0

String dataDir = getFilesDir().toString();
Log.d(TAG, "getFilesDir(): " + dataDir);
//getFilesDir(): /data/user/0/ai.nixie.copyassets/files

String externalFilesDir = getExternalFilesDir(null).toString();
Log.d(TAG, "getExternalFilesDir: " + externalFilesDir);
//getExternalFilesDir: /storage/emulated/0/Android/data/ai.nixie.copyassets/files


PackageManager packageManager = getPackageManager();
String str =getPackageName();
try {
    PackageInfo pi = packageManager.getPackageInfo(str, 0);
    str = pi.applicationInfo.dataDir;
} catch (PackageManager.NameNotFoundException e) {
    e.printStackTrace();
}
Log.d(TAG, "applicationInfo.dataDir: " + str);
//applicationInfo.dataDir: /data/user/0/ai.nixie.copyassets

Android Studio v2.3中測試通過账千。

References
https://stackoverflow.com/questions/4447477/how-to-copy-files-from-assets-folder-to-sdcard

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末侥蒙,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子匀奏,更是在濱河造成了極大的恐慌鞭衩,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件娃善,死亡現(xiàn)場離奇詭異论衍,居然都是意外死亡,警方通過查閱死者的電腦和手機聚磺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進店門坯台,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人瘫寝,你說我怎么就攤上這事蜒蕾〕砭妫” “怎么了?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵滥搭,是天一觀的道長酸纲。 經(jīng)常有香客問我,道長瑟匆,這世上最難降的妖魔是什么闽坡? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮愁溜,結(jié)果婚禮上疾嗅,老公的妹妹穿的比我還像新娘。我一直安慰自己冕象,他們只是感情好代承,可當(dāng)我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著渐扮,像睡著了一般论悴。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上墓律,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天膀估,我揣著相機與錄音,去河邊找鬼耻讽。 笑死察纯,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的针肥。 我是一名探鬼主播饼记,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼慰枕!你這毒婦竟也來了具则?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤具帮,失蹤者是張志新(化名)和其女友劉穎博肋,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體匕坯,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡束昵,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了葛峻。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片锹雏。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖术奖,靈堂內(nèi)的尸體忽然破棺而出礁遵,到底是詐尸還是另有隱情轻绞,我是刑警寧澤,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布佣耐,位于F島的核電站政勃,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏兼砖。R本人自食惡果不足惜奸远,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望讽挟。 院中可真熱鬧懒叛,春花似錦、人聲如沸耽梅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽眼姐。三九已至诅迷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間众旗,已是汗流浹背罢杉。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留逝钥,地道東北人屑那。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓拱镐,卻偏偏與公主長得像艘款,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子沃琅,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,452評論 2 348

推薦閱讀更多精彩內(nèi)容