0
我的Android應用程序中發現我的錯誤有點麻煩。打開失敗:ENOENT(沒有這樣的文件或目錄)內部存儲
我的「ResultActivity」的目標是,在內部存儲中創建一個文件,然後從我的服務器(通過FTP)下載一個文件,然後調用下一個Activity(GiftActivity)。
但是,當下一個活動試圖訪問這些文件時,我得到提到的錯誤。迄今爲止沒有什麼新東西,但有趣的是,如果我手動殺死應用程序並重新啓動它,它會在下一次就像魅力一樣。
這裏是我的代碼:
ResultActivity.java:
//...
ImageButton download = (ImageButton) findViewById(R.id.downloadCode);
download.setBackgroundDrawable(null);
assert download != null;
download.setOnClickListener(new View.OnClickListener() {@
Override
public void onClick(View v) {
new AsyncTask < Integer, Void, Void >() {@
Override
protected Void doInBackground(Integer...params) {
try {
JSch jsch2 = new JSch();
session = jsch2.getSession("xy", "1.2.3.4", 22);
session.setPassword("xyz123");
//Set FTP Settings
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
//Disables Fingerprint checking!
session.setConfig(config);
//load config to session
session.connect();
//connect to the session
channel = session.openChannel("sftp");
channel.connect();
//open an SFTP Channel
channelSftp = (ChannelSftp) channel;
File checkExistance = getBaseContext().getFileStreamPath("code.txt");
if (checkExistance.exists()) {
getBaseContext().deleteFile("code.txt");
getBaseContext().deleteFile("usage.txt");
}
File code = new File(getFilesDir().getAbsolutePath(), "code.txt");
File usage = new File(getFilesDir().getAbsolutePath(), "usage.txt");
code.createNewFile();
usage.createNewFile();
channelSftp.get("/home/code.txt", getFilesDir() + "/code.txt");
channelSftp.get("/home/usage.txt", getFilesDir() + "/usage.txt");
} catch (JSchException e) {
e.printStackTrace();
} catch (SftpException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}.execute(1);
Intent intent = new Intent(ResultActivity.this, GiftActivity.class);
ResultActivity.this.startActivity(intent);
ResultActivity.this.finish();
}
});
GiftActivity.java:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_gift);
TextView actualCode = (TextView) findViewById(R.id.actualCode);
TextView actualUsage = (TextView) findViewById(R.id.usageCode);
String code = "";
String usage = "";
try {
FileInputStream fis = getBaseContext().openFileInput("code.txt");
InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
BufferedReader bufferedReader = new BufferedReader(isr);
StringBuilder sb = new StringBuilder();
String line;
while ((line = bufferedReader.readLine()) != null) {
sb.append(line).append("\n");
}
code = sb.toString();
} catch (IOException e) {
e.printStackTrace();
code="error1";
}
try {
FileInputStream fis = getBaseContext().openFileInput("usage.txt");
InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
BufferedReader bufferedReader = new BufferedReader(isr);
StringBuilder sb = new StringBuilder();
String line;
while ((line = bufferedReader.readLine()) != null) {
sb.append(line).append("\n");
}
usage = sb.toString();
} catch (IOException e) {
e.printStackTrace();
usage="error2";
}
actualCode.setText(code);
actualUsage.setText("you got a gift for " + usage + " congratulation!");
}