2016-12-24 109 views
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!"); 
    } 

回答

0

我通過更換固定它:

File code = new File(getFilesDir().getAbsolutePath(), "code.txt"); 
File usage = new File(getFilesDir().getAbsolutePath(), "usage.txt"); 

code.createNewFile(); 
usage.createNewFile(); 

With:

File code = new File(getBaseContext().getFilesDir(), "code.txt"); 
File usage = new File(getBaseContext().getFilesDir(), "usage.txt"); 
相關問題