【问题标题】:There was a problem saving the text in EditText to a file将 EditText 中的文本保存到文件时出现问题
【发布时间】:2021-06-16 01:35:44
【问题描述】:

此代码接收您要在editText中注册的熟人的信息,然后单击finButton将您收到的信息保存为名为friendlist.txt的文件。 但是,Toast 消息是从按下 finButton 时当前执行的 try-catch 语句输出的。 另外,checkpermission 不起作用,它被包裹在 try~catch 语句中,但在 logcat 上没有输出。

并且表现出来。

使用权限 android:name="android.permission.READ_EXTERNAL_STORAGE"

使用权限 android:name="android.permission.WRITE_EXTERNAL_STORAGE"

已经写好了。

请告诉我解决方案。 而且这个内容是用翻译写的,所以句子会很奇怪。

当你按下 finButton 时,logcat 如下所示。

第116行对应的代码是这个。

FileOutputStream outstream = openFileOutput("friendList.txt", Activity.MODE_WORLD_WRITEABLE);

logcat

public class EnteringInformationOfFriendActivity extends AppCompatActivity {
    Button finButton;
    EditText phoneNumberEditText, nameEditText, emailEditText, groupEditText, memoEditText;

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

        phoneNumberEditText = (EditText) findViewById(R.id.phoneNumberEditText);

        nameEditText = (EditText) findViewById(R.id.nameEditText);
        emailEditText = (EditText) findViewById(R.id.emailEditText);
        groupEditText = (EditText) findViewById(R.id.groupEditText);
        memoEditText = (EditText) findViewById(R.id.memoEditText);

        try{
            checkPermission();
        }
        catch (Exception e){
            StringWriter sw = new StringWriter();
            e.printStackTrace(new PrintWriter(sw));
            String exceptionAsStrting = sw.toString();
            Log.e("CSP", exceptionAsStrting);

            e.printStackTrace();
        }

        finButton = (Button) findViewById(R.id.finButton);
        finButton.setOnClickListener(v -> {
            try{
                String phoneTxt = phoneNumberEditText.getText().toString().trim();
                String nameTxt = nameEditText.getText().toString().trim();
                String emailTxt = emailEditText.getText().toString().trim();
                String groupTxt = groupEditText.getText().toString().trim();
                String memoTxt = memoEditText.getText().toString().trim();

                String friendInfoTxt = phoneTxt + "-" + nameTxt + "-" + emailTxt + "-" + groupTxt + "-" + memoTxt;

                FileOutputStream outstream = openFileOutput("friendList.txt", Activity.MODE_WORLD_WRITEABLE);

                outstream.write(friendInfoTxt.getBytes());

                outstream.close();

                Intent intent = new Intent(v.getContext(), FriendListActivity.class);
                startActivity(intent);
            } catch (Exception e){
                StringWriter sw = new StringWriter();
                e.printStackTrace(new PrintWriter(sw));
                String exceptionAsStrting = sw.toString();
                Log.e("Filesave", exceptionAsStrting);

                e.printStackTrace();
                Toast.makeText(this.getApplicationContext(), "Save failed.", Toast.LENGTH_SHORT).show();
            }
        });
    }
    public void checkPermission(){
        if(checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
        }
    }
}

【问题讨论】:

    标签: java android file


    【解决方案1】:

    尝试使用 Context.MODE_APPEND 或 Context.MODE_PRIVATE 而不是 Activity.MODE_WORLD_WRITEABLE

    【讨论】:

    • 哦,谢谢。最后,很抱歉,您能告诉我这个文件在 AVD 中的存储位置吗?我想这要归功于你按下 finButton。
    • 在 android studio 的顶部视图 -> 工具窗口 -> 设备文件资源管理器
    • 没问题。不要忘记将我的答案标记为对您有用的答案:)
    • 非常感谢!我按了 V 字。对吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-29
    • 1970-01-01
    相关资源
    最近更新 更多