华为手机_text是什么文件_AS读取华为手机内置SD卡文件时,找不到文件问题

private Button btndownloadFile,btnstopLoad;//按钮

private TextView tvShow;//显示加载信息

private TextView edtContent;//显示加载文件内容

//private MyAsyncTask myAsyncTask;

private downloadAsyncTaska download;//AsyncTask子类

private ProgressBar proBar;//进度条

private File file = new File(Environment.getExternalStorageDirectory(),"kgmusic//1.txt");

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_async_task);

btndownloadFile = findViewById(R.id.btn_loadFile);

btnstopLoad = findViewById(R.id.btn_stopload);

tvShow = findViewById(R.id.tv_show);

edtContent = findViewById(R.id.edt_content);

proBar = findViewById(R.id.progress_bar);

btndownloadFile.setOnClickListener(AsyncTaskActivity.this);

btnstopLoad.setOnClickListener(AsyncTaskActivity.this);

download = new downloadAsyncTaska();

}

@Override

public void onClick(View v) {

switch (v.getId())

{

case R.id.btn_loadFile:

//动态申请权限

if(ContextCompat.checkSelfPermission(AsyncTaskActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED){

ActivityCompat.requestPermissions(AsyncTaskActivity.this,new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},1);

}else {

Toast.makeText(this, "无须动态申请", Toast.LENGTH_SHORT).show();

download.execute(file);

}

break;

case R.id.btn_stopload:

download.onCancelled();

break;

default:break;

}

}

private class downloadAsyncTaska extends AsyncTask {

@Override

protected String doInBackground(File... strings) {//运行在子线程 必须实现

//读文件

return read(strings[0]);

//publishProgress(1);//传到主线程

}

@Override

protected void onPreExecute() {//运行在主线程 需要自己写:异步运行

tvShow.setText("加载中");

super.onPreExecute();

}

@Override

protected void onProgressUpdate(Integer... values) {//运行主线程 更新UI 可以自动调用

int per = values[0]; // 取出传出的值

proBar.setProgress(per);// 显示任务进度

if (per <= 100)

tvShow.setText("loading" + per + "%");

tvShow.setText("loading..." + per + "%");// 显示任务进度

super.onProgressUpdate(values);

}

@Override

protected void onPostExecute(String s) {//运行主线程 执行完成结果 可以自动调用

edtContent.setText(s);// 显示读取文件内容

tvShow.setText("加载完成");

super.onPostExecute(s);

}

@Override

protected void onCancelled() {//异步执行:需要自己写

tvShow.setText("取消加载!");

proBar.setProgress(0);

super.onCancelled();

}

//读取文件及计算进度值

private String read(File file) {

StringBuilder strb = new StringBuilder();//字符串处理类

BufferedReader br = null;//字符缓冲流

//获取文件长度

long fileLength = file.length();//文件原长度

long readLength = 0;

try {

br = new BufferedReader(new InputStreamReader(new FileInputStream(file)));//读取文件:字节流->字符流->字符缓冲流

String line = br.readLine();//读出一行数据

while (line != null) {

strb.append(line + "\n");// 存入字符串处理类对象中

readLength += line.getBytes().length;//获取当前已经读取的文件长度

int per = (int) (readLength * 100.0 / fileLength);//计算百分比

publishProgress(per);//传出需要更新值,之后执行onProgressUpdate()

Thread.sleep(50);//模拟缓慢加载速度

line = br.readLine();//读缓冲流的下一行数据

}

return strb.toString();//返回读取的文件数据

} catch (IOException e) {

e.printStackTrace();

} catch (InterruptedException e) {

e.printStackTrace();

} finally {

try {

if (br != null) {

br.close();//关闭缓冲流对象 顶层流关闭,低层流自然关闭

}

} catch (IOException e) {

e.printStackTrace();

}

}

return null; //如果读取文件不成功,返回null

}

}

华为手机上的路径没有错误W/System.err: java.io.FileNotFoundException: /storage/emulated/0/kgmusic/1.txt (No such file or directory)

找不到原因,求解!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值