【5年Android从零复盘系列之⼆⼗⼋】Android存储(3):asts⽂件详解
【5年Android从零复盘系列之⼆⼗⼋】Android存储(3):asts⽂件
【代码是最好的⽼师】
1.概述
⽬录⽤于存储app的原始⽂件
⽬录下所有⽂件不会被编译,会被原样打包进APK
3.使⽤特定⼯具类AstManager读取Asts⽬录下⽂件
4.通常存放1-⽂本;2-不压缩图像;3-h5混合开发相关⽂件;4-⾳视频⽂件
5.不同于res/raw,asts下⽂件不能使⽤引⽤
⽅法功能
list(Stringpath)获取path下的⽂件和⽂件夹名称
open(StringfileName)打开⽂件,默认ACCESS_STREAMING模式
open(StringfileName,intaccessMode)
指定打开模式。有
未指定:ACCESS_UNKNOWN
随机:ACCESS_RANDOM
顺序:ACCESS_STREAMING
缓存:ACCESS_BUFFER
clo()关闭回收资源
2.使⽤
加载⽂本.txt
加载图⽚
加载h5
2.1加载⽂本
privatevoidreadAstTxt(){
Stringresult="";
try{
InputStreamis=getAsts().open("");
intlenght=ble();
byte[]buffer=newbyte[lenght];
(buffer);
result=newString(buffer,"utf8");
}catch(Exceptione){
tackTrace();
}
t(":n"+result);
}
2.2加载图⽚
privatevoidreadAstImg(){
Bitmapbitmap=null;
try{
InputStreamis=getAsts().open("img/ic_");
bitmap=Stream(is);
}catch(Exceptione){
tackTrace();
}
if(bitmap!=null){
geBitmap(bitmap);
}
}
2.1加载html
privatevoidreadAstH5(){
StringfileName="file:///android_ast/";
t(fileName);
WebViewClientwebViewClient=newWebViewClient();
ViewClient(webViewClient);
l(fileName);
}
3.注意
1.尽量避免存放⼤⽂件,会直接影响apk包体积
2.建议混合开发情形下,才使⽤asts存放⽂件
3.需要直接引⽤的情形,也可使⽤/res/raw原始⽂件的⽅式
4.其他代码
publicclassMainActivityextendsAppCompatActivity{
TextViewmTv;
ImageViewmImgShow;
WebViewmWebView;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
te(savedInstanceState);
tContentView(ty_main);
findViewById(_read_asts_txt).tOnClickListener(kListener(){
@Override
publicvoidonClick(Viewview){
readAstTxt();
}
});
findViewById(_read_asts_img).tOnClickListener(kListener(){
@Override
publicvoidonClick(Viewview){
readAstImg();
}
});
findViewById(_read_asts_h5).tOnClickListener(kListener(){
@Override
publicvoidonClick(Viewview){
readAstH5();
}
});
mTv=findViewById(_content);
mImgShow=findViewById(_show);
mWebView=findViewById(_view);
checkPermission();
}
privatevoidreadAstH5(){
StringfileName="file:///android_ast/";
t(fileName);
WebViewClientwebViewClient=newWebViewClient();
ViewClient(webViewClient);
l(fileName);
}
privatevoidreadAstImg(){
Bitmapbitmap=null;
try{
InputStreamis=getAsts().open("img/ic_");
bitmap=Stream(is);
}catch(Exceptione){
tackTrace();
}
if(bitmap!=null){
geBitmap(bitmap);
}
}
privatevoidreadAstTxt(){
Stringresult="";
try{
InputStreamis=getAsts().open("");
intlenght=ble();
byte[]buffer=newbyte[lenght];
(buffer);
result=newString(buffer,"utf8");
}catch(Exceptione){
tackTrace();
}
t(":n"+result);
}
}
activity_
<?xmlversion="1.0"encoding="utf-8"?>
app="/apk/res-auto"
tools="/tools"
layout_width="match_parent"
layout_height="match_parent"
context=".MainActivity">
layout_width="match_parent"
layout_height="match_parent"
gravity="center"
orientation="vertical"
layout_constraintBottom_toBottomOf="parent"
layout_constraintLeft_toLeftOf="parent"
layout_constraintRight_toRightOf="parent"
layout_constraintTop_toTopOf="parent">
id="@+id/btn_read_asts_txt"
layout_width="wrap_content"
layout_height="wrap_content"
text="read_asts_txt"
/>
id="@+id/btn_read_asts_img"
layout_width="wrap_content"
layout_height="wrap_content"
text="read_asts_img"
/>
id="@+id/btn_read_asts_h5"
layout_width="wrap_content"
layout_height="wrap_content"
text="read_asts_h5"
/>
id="@+id/tv_content"
layout_width="wrap_content"
layout_height="wrap_content"
text="内容:"
/>
id="@+id/img_show"
layout_width="80dp"
layout_height="80dp"/>
id="@+id/web_view"
layout_width="match_parent"
layout_height="match_parent"/>
本文发布于:2022-12-31 09:27:42,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/90/64596.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |