我已经浏览了这里的其他主题,找不到对我有用的东西。我需要做的是从外部存储器读取文本文件并将文本复制到我的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;
}
感谢任何帮助!
答案 0 :(得分:0)
无论如何,试试这样的试试块
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)
您可以使用简单的Scanner
和File
个对象:
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
,如果文件为空,则返回空字符串。