美文网首页
java.io.FileNotFoundException:op

java.io.FileNotFoundException:op

作者: 怪咖小青年_56e8 | 来源:发表于2022-03-04 10:38 被阅读0次

    1.添加权限

    //清单文件中添加
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    
    //Activity中调用获取权限方法
     private void checkNeedPermissions(){
            //6.0以上需要动态申请权限
            if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA)
                    != PackageManager.PERMISSION_GRANTED
                    || ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
                    != PackageManager.PERMISSION_GRANTED
                    || ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE)
                    != PackageManager.PERMISSION_GRANTED) {
                //多个权限一起申请
                ActivityCompat.requestPermissions(this, new String[]{
                        Manifest.permission.CAMERA,
                        Manifest.permission.WRITE_EXTERNAL_STORAGE,
                        Manifest.permission.READ_EXTERNAL_STORAGE
                }, 1);
            }
        }
    

    2.查看文件路径是否正确

    //我的文件放在手机storage/sdcard0/110_001.txt
            File file = new File("/storage/emulated/0/110_001.txt");
            if(!file.exists()) {
                Log.e("MainActivity.this","File doesn't exist!");
                return;
            }
            try {
    
                FileInputStream is = new FileInputStream(file);
                byte[] b = new byte[is.available()];
                is.read(b);
                String result = new String(b);
                System.out.println("读取成功:"+result);
            } catch (Exception e) {
                e.printStackTrace();
            }
    

    3.判断sd卡是否存在及路径

      /**
         * 获取默认的文件路径
         *
         * @return
         */
        public static String getDefaultFilePath() {
            String filepath = "";
            File file = new File("/storage/emulated/0/110_001.txt");
            if (file.exists()) {
                filepath = file.getAbsolutePath();
            } else {
                filepath = "不适用";
            }
            return filepath;
        }
        /**
         * 获取SD卡根目录路径
         *
         * @return
         */
        public static String getSdCardPath() {
            boolean exist = isSdCardExist();
            String sdpath = "";
            if (exist) {
                sdpath = Environment.getExternalStorageDirectory()
                        .getAbsolutePath();
            } else {
                sdpath = "不适用";
            }
            return sdpath;
    
        }
        /**
         * 判断SDCard是否存在 [当没有外挂SD卡时,内置ROM也被识别为存在sd卡]
         *
         * @return
         */
        public static boolean isSdCardExist() {
            return Environment.getExternalStorageState().equals(
                    Environment.MEDIA_MOUNTED);
        }
    

    4.全部代码

    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            checkNeedPermissions();
            isSdCardExist();
    
            getSdCardPath();
    
            String defaultFilePath = getDefaultFilePath();
            System.out.println(defaultFilePath+"1");
            File file = new File("/storage/emulated/0/110_001.txt");
    //            File file =new File("/storage/emulated/0/110_001.txt");
            if(!file.exists()) {
                Log.e("MainActivity.this","File doesn't exist!");
                return;
            }
            try {
    
                FileInputStream is = new FileInputStream(file);
                System.out.println("192.168.31.110.001.txt");
                byte[] b = new byte[is.available()];
                is.read(b);
                String result = new String(b);
                System.out.println("读取成功:"+result);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        private void checkNeedPermissions(){
            //6.0以上需要动态申请权限
            if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA)
                    != PackageManager.PERMISSION_GRANTED
                    || ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
                    != PackageManager.PERMISSION_GRANTED
                    || ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE)
                    != PackageManager.PERMISSION_GRANTED) {
                //多个权限一起申请
                ActivityCompat.requestPermissions(this, new String[]{
                        Manifest.permission.CAMERA,
                        Manifest.permission.WRITE_EXTERNAL_STORAGE,
                        Manifest.permission.READ_EXTERNAL_STORAGE
                }, 1);
            }
        }
        /**
         * 获取默认的文件路径
         *
         * @return
         */
        public static String getDefaultFilePath() {
            String filepath = "";
            File file = new File("/storage/emulated/0/110_001.txt");
            if (file.exists()) {
                filepath = file.getAbsolutePath();
            } else {
                filepath = "不适用";
            }
            return filepath;
        }
        /**
         * 获取SD卡根目录路径
         *
         * @return
         */
        public static String getSdCardPath() {
            boolean exist = isSdCardExist();
            String sdpath = "";
            if (exist) {
                sdpath = Environment.getExternalStorageDirectory()
                        .getAbsolutePath();
            } else {
                sdpath = "不适用";
            }
            return sdpath;
    
        }
        /**
         * 判断SDCard是否存在 [当没有外挂SD卡时,内置ROM也被识别为存在sd卡]
         *
         * @return
         */
        public static boolean isSdCardExist() {
            return Environment.getExternalStorageState().equals(
                    Environment.MEDIA_MOUNTED);
        }
    }
    

    相关文章

      网友评论

          本文标题:java.io.FileNotFoundException:op

          本文链接:https://www.haomeiwen.com/subject/cziprrtx.html