如何将字符串从文本文件复制到Java字符串?

时间:2016-07-22 00:59:10

标签: java android

我已经浏览了这里的其他主题,找不到对我有用的东西。我需要做的是从外部存储器读取文本文件并将文本复制到我的Java文件中的字符串。转换后,我需要它将该字符串与用户在Edittext中输入的字符串进行比较。这是我到目前为止所做的,我确定它有很多错误。

            try {
                decrypt();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (NoSuchAlgorithmException e) {
                e.printStackTrace();
            } catch (NoSuchPaddingException e) {
                e.printStackTrace();
            } catch (InvalidKeyException e) {
                e.printStackTrace();
        }

            final EditText pin = (EditText) findViewById(R.id.pin);

        pin.setOnKeyListener(new View.OnKeyListener() {
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                    if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
                            (keyCode == KeyEvent.KEYCODE_ENTER)) {

                    File file = new File(Environment.getExternalStorageDirectory().toString() + "/Vault/data1.txt");
                        String pinkey = pin.getText().toString();

                        if (pinkey.matches("")) {
                            Toast.makeText(MainActivity.this, "Type in pin", Toast.LENGTH_LONG).show();
                        }

                        else {
                            try {
                                decrypt();
                            } catch (IOException e) {
                                e.printStackTrace();
                            } catch (NoSuchAlgorithmException e) {
                                e.printStackTrace();
                            } catch (NoSuchPaddingException e) {
                                e.printStackTrace();
                            } catch (InvalidKeyException e) {
                                e.printStackTrace();
                            }

                            StringBuilder text = new StringBuilder();

                            String key = new String(file.toString());
                            try {
                                BufferedReader br = new BufferedReader(new FileReader(file));
                                String line;

                                while ((line = br.readLine()) != null) {
                                    text.append(line);
                                }
                                br.close();
                            } catch (IOException e) {
                                e.printStackTrace();
                            }

                            if (file.exists()) {
                            } else {
                                showHelp(null);
                            }

                            if (pinkey.equals(br)) {
                                Toast.makeText(MainActivity.this, "You're signed in", Toast.LENGTH_SHORT).show();
                            }
                            else {
                                Toast.makeText(MainActivity.this, "Try again", Toast.LENGTH_LONG).show();
                            }
                        }
                        return true;
                    }
                    return false;
                }

感谢任何帮助!

2 个答案:

答案 0 :(得分:0)

傻傻的我。我应该在评论之前使用滚动条:p

无论如何,试试这样的试试块

 BufferedReader br = new BufferedReader(new FileReader(file));
        try {
            StringBuilder sb = new StringBuilder();
            String line = br.readLine();

            while (line != null) {
                sb.append(line);
                sb.append(System.lineSeparator());
                line = br.readLine();
            }
            String fileAsString = sb.toString();
        } finally {
            br.close();
        }

不确定您是否需要新的行分隔符,但如果将其与另一个文件进行比较,最好将其放在表示文件的表单中...我会假设。

答案 1 :(得分:0)

您可以使用简单的ScannerFile个对象:

public String readFile(String path) {
        try {
            Scanner se = new Scanner(new File(path));
            String txt = "";
            while (se.hasNext())
                txt += se.nextLine() + "\n";
            se.close();
            return txt;
        } catch (FileNotFoundException e) {
            return null;
        }
    }

您打开扫描文件的扫描程序,只要有更多内容要从文件中读取,您就可以将下一行附加到字符串中。

如果文件不存在,则此方法返回null,如果文件为空,则返回空字符串。