写入和读取相同的文件在Android应用程序中不起作用

时间:2017-06-19 07:58:28

标签: android string text-files filereader filewriter

我想在文件 abc.txt 中写一个字符串,然后读取相同内容并与输入字符串进行比较。但它没有按预期工作。 当我通过在netbeans中创建一个项目来做同样的事情时,它就像一个魅力,但在这里却没有。 写作代码:

try{
        writer = new BufferedWriter( new FileWriter("abc.txt"));
        writer.write("12345");
        writer.close();
        Toast.makeText(getBaseContext(), "Saved", Toast.LENGTH_LONG).show();

    }catch(IOException i){
        i.printStackTrace();
    }

阅读代码:

String ownerPass= null;
    StringBuilder s = new StringBuilder();

    try{

        FileReader fr=new FileReader("abc.txt");
        BufferedReader br=new BufferedReader(fr);
        int i;
        while((i=br.read())!=-1){


            s.append((char)i);
        }
        br.close();
        fr.close();
        ownerPass = s.toString();

    }catch(IOException i){
        i.printStackTrace();
    }

无论是比较 s 还是 ownerPass

,情况都是一样的

我不明白它是否无法写入文件或读取文件。 另请告诉我如何在计算机中手动检查文件abc.txt。

这是我的清单文件:

<?xml version="1.0" encoding="utf-8"?>

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="NORIS"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
        <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />


        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        if (!Settings.System.canWrite(this)) {
        requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,
        Manifest.permission.READ_EXTERNAL_STORAGE}, 2909);
        } else {
        // continue with your code
        }
        } else {
        // continue with your code
        }

        @Override
        public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        switch (requestCode) {
        case 2909: {
        if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
        Log.e("Permission", "Granted");
        } else {
        Log.e("Permission", "Denied");
        }
        return;
        }
        }
        }
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".userBase" />
    <activity android:name=".ownerBase" />
    <activity android:name=".ownerPage" />
    <activity
        android:name=".SettingsActivity"
        android:label="@string/title_activity_settings" />
    <activity android:name=".ownerBrowse" />
    <activity android:name=".ownerEdit"></activity>
</application>

这是我的java启动器活动:

public class MainActivity extends AppCompatActivity {



SharedPreferences prefs = null;

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



    prefs = getSharedPreferences("com.example.srijankumar.myapp1", MODE_PRIVATE);


    Button btnUser = (Button) findViewById(R.id.btnUser);
    btnUser.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            callUserBase();
        }

    });

    Button btnOwner = (Button) findViewById(R.id.btnOwner);
    btnOwner.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            callOwnerBase();
        }
    });


    BufferedWriter writer = null;

    try{
        writer = new BufferedWriter( new FileWriter("abc.txt"));
        writer.write("12345");
        writer.close();
        Toast.makeText(getBaseContext(), "Saved", Toast.LENGTH_LONG).show();



    } catch (Exception e) {
            e.printStackTrace();
        }


    }


private void callOwnerBase() {
    Intent i = new Intent(MainActivity.this,ownerBase.class);
    startActivity(i);
}

private void callUserBase() {
    Intent i = new Intent(MainActivity.this,userBase.class);
    startActivity(i);
}

}

1 个答案:

答案 0 :(得分:-1)

您是否添加了清单权限和运行时权限?

在清单

中添加此行
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

在启动器活动中添加此运行时权限:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    if (!Settings.System.canWrite(this)) {
        requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,
            Manifest.permission.READ_EXTERNAL_STORAGE}, 2909);
    } else {
        // continue with your code
    }
} else {
    // continue with your code
}

    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        switch (requestCode) {
            case 2909: {
                if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    Log.e("Permission", "Granted");
                } else {
                    Log.e("Permission", "Denied");
                }
                return;
            }
        }
    }
相关问题