为什么从SD卡文件中读取文本在android中返回null?

时间:2014-05-17 09:59:02

标签: android file read-write

我想保留一些字符串,即使我清除我的应用数据,所以我使用的是保存在SD卡中的文本文件。 我正在使用SD卡文件存储myStrings并在运行时读取它们。但每次readfile都返回null。 以下是我的代码:

protected void writeToFile(String data, String fileName) {
        String root_sd = Environment.getExternalStorageDirectory().toString();
        File dir = new File(root_sd+"/"+"AntiVirusPref");
        if(dir.mkdir())
        {

            File f=new File( dir.getAbsolutePath()+"/"+fileName);
            if (f.exists()) {
                f.delete();
            }
            if (!f.exists()) {
                try {
                    f.createNewFile();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }

        }
        else {


            File f=new File( dir.getAbsolutePath()+"/"+fileName);
            if (f.exists()) {
                f.delete();
            }
            if (!f.exists()) {
                try {
                    f.createNewFile();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
        try {
            OutputStreamWriter outputStreamWriter = new OutputStreamWriter(openFileOutput(fileName, Context.MODE_PRIVATE));
            outputStreamWriter.write(data);
            outputStreamWriter.close();
        }
        catch (IOException e) {
            Log.e("Exception", "File write failed: " + e.toString());
        } 
    }


    protected String readFromFile(String fileName, String defaultValue) {

        String ret = "";

        String root_sd = Environment.getExternalStorageDirectory().toString();
        File dir = new File(root_sd+"/"+"AntiVirusPref");

        File file = new File(dir.getAbsolutePath() + "/"+fileName);
        try {
            //InputStream inputStream = openFileInput("/sdcard/"+fileName);
            FileInputStream inputStream = new FileInputStream(file);
            if ( inputStream != null ) {
                InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
                BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
                String receiveString = "";
                StringBuilder stringBuilder = new StringBuilder();

                /*if((receiveString = bufferedReader.read) != null){
                    stringBuilder.append(receiveString);
                }*/
                 String line="";
                    int c;
                    while ((c = bufferedReader.read()) != -1) {
                        line+=(char)c;
                        //counter++;
                    }
                    stringBuilder.append(line);

                inputStream.close();
                ret = stringBuilder.toString();
            }
        }
        catch (FileNotFoundException e) {
            Log.e("login activity", "File not found: " + e.toString());
        } catch (IOException e) {
            Log.e("login activity", "Can not read file: " + e.toString());
        }
        if (ret.equals("")) {
            ret=defaultValue;
        }
        return ret;
    }

1 个答案:

答案 0 :(得分:0)

尝试添加"文件:///" Uri之前的后缀