Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 试图从Android Studio中的存储中获取文本文件_Java_Android_File_Text_Storage - Fatal编程技术网

Java 试图从Android Studio中的存储中获取文本文件

Java 试图从Android Studio中的存储中获取文本文件,java,android,file,text,storage,Java,Android,File,Text,Storage,我正试图从存储器中获取文本文件。 这是我的密码。它正在捕获IOexception,为什么? 我已经创建了一个按钮,让我选择文本文件,但只要点击 文件,它确实为我提供了任何路径,并且它不会将文本发送到我的文本视图 下面是我的代码: package com.example.filechooser2; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.a

我正试图从存储器中获取文本文件。 这是我的密码。它正在捕获
IOexception
,为什么? 我已经创建了一个按钮,让我选择文本文件,但只要点击 文件,它确实为我提供了任何路径,并且它不会将文本发送到我的文本视图

下面是我的代码:

package com.example.filechooser2;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import android.Manifest;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.nio.BufferUnderflowException;

public class MainActivity extends AppCompatActivity {

private static final int PERMISSION_REQUEST_STORAGE = 1000;
private static final int READ_REQUEST_CODE =400 ;
Button b_load;
TextView tv;

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

    b_load = (Button) findViewById(R.id.b_load);
    tv = (TextView) findViewById(R.id.tv);

    b_load.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            performFileSearch();
        }
    });

    //requesting permission

    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED)
    {
        requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},PERMISSION_REQUEST_STORAGE);
    }
}
我认为这就是代码产生问题的地方,因为 它显示异常错误,请帮助

 // Reading Content
  private  String readText(String input)
  {
      File file = new File(Environment.getExternalStorageDirectory(),input);
      StringBuilder text =  new StringBuilder();
      try{
          BufferedReader br = new BufferedReader(new FileReader(file));
          String line;
            while((line = br.readLine()) != null)
          {
                text.append(line);
                text.append("\n");

            } br.close();
      }
      catch (IOException e){

         e.printStackTrace();
          Toast.makeText(this,"Messed up",Toast.LENGTH_SHORT).show();


      }
        return text.toString();

  }



// NOW TO GET FROM FILE SYSTEM
private void performFileSearch()
{
    Intent i = new Intent (Intent.ACTION_OPEN_DOCUMENT);
    i.addCategory(Intent.CATEGORY_OPENABLE);
    i.setType("text/*");
    startActivityForResult(i,READ_REQUEST_CODE);


}

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data)
{
    if(requestCode == READ_REQUEST_CODE && resultCode == Activity.RESULT_OK);
    {
        if(data != null)
        {
            Uri uri  = data.getData();
            String Path = uri.getPath();
            Path = Path.substring(Path.indexOf(":")+1);
            if(Path.contains("emulated"))
            {
                Path = Path.substring(Path.indexOf("0")+1);
            }
            Toast.makeText(this,""+Path,Toast.LENGTH_SHORT);
            tv.setText(readText(Path));
        }
    }
}


@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {

    if(requestCode==PERMISSION_REQUEST_STORAGE){

        if (grantResults[0]==PackageManager.PERMISSION_GRANTED)
        {
            Toast.makeText(this,"Permisssion Granted",Toast.LENGTH_SHORT).show();

        }
        else {
            Toast.makeText(this,"Permission Not Given",Toast.LENGTH_SHORT).show();
            finish();
        }
    }
}

}

清除所有路径内容。在
ContentResolver
上调用
openInputStream()
,传入您的
Uri
,以获取由该
Uri
标识的内容的
InputStream
。您能解释一下在哪里重新编辑路径吗?Plzz…谷歌有。从中还显示了
操作\u打开\u文档
openInputStream()
的使用。