Android 访问assets下的文件

时间:2023-12-27 11:40:25

assets下经常可以放一些比较大的资源,对于这些资源我们如何访问。

步骤

1.获取AssetManager。

AssetManager am = getResources().getAssets();

2.利用AssetManager的open(String filePath)方法打开对应的输入流。

InputStream is = am.open(assetsFileName);

读取图片文件保存到SD卡示例代码

public  boolean saveToSDCard(String localFilePath, String fileName,
            Bitmap bitmap) {
        String extraPath = Environment.getExternalStorageDirectory().toString();
        // 使用绝对路径
        extraPath = extraPath + "/" + "PaperCut"+"/"+localFilePath;
        // String path = null;
        File file = new File(extraPath);
        if (!file.exists())
            file.mkdirs();
        try {
            filePath = file.getPath() + "/" + fileName + ".png";
            File newFile = new File(filePath);
            if (newFile.exists()) {
                Toast.makeText(getApplicationContext(), R.string.finishTips1, // 已经保存过啦亲
                        Toast.LENGTH_SHORT).show();
                return true;
            }else {
                FileOutputStream fileOutputStream = new FileOutputStream(filePath);
                bitmap.compress(Bitmap.CompressFormat.PNG, 100, fileOutputStream);
                // 另一种格式的结尾
                // bitmap.compress(CompressFormat.PNG, 50, fileOutputStream);
                fileOutputStream.flush();
                fileOutputStream.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
            // System.out.println(e.toString());
            return false;
        }
        return true;
    }
    private Bitmap getImageFromAssetsFile(int  position)
      {
          //Bitmap image = null;
          Bitmap image = null;
          String assetsFileName = null;
          assetsFileName = "album/"+is.imageMyChooseName.get(position)+"/1.png";
          //AssetManager从assets文件夹中获取资源
          AssetManager am = getResources().getAssets();
          try
          {
              InputStream is = am.open(assetsFileName);
              //从InputStream解码生成image
              image = BitmapFactory.decodeStream(is);
              is.close();
          }
          catch (IOException e)
          {
              e.printStackTrace();
          }
          return image;
      }
      //调用
          saveToSDCard("album","filePath"),getImageFromAssetsFile(position));