2017-10-05 13 views
0

Tout d'abord, je voudrais m'excuser si c'est une erreur simpliste. Je suis surtout autodidacte, ce que je sais est incroyablement sporadique, et pourrait bien être hasardeux. Je travaille sur une application qui fonctionne comme un gestionnaire de mot de passe. Il a une fonction de sauvegarde et de restauration. Je l'ai eu à travailler en utilisant un répertoire fixe sans problèmes, mais en essayant d'ajouter un sélecteur de fichiers, il y a eu des problèmes.Fichier non trouvé après le fichier sélectionné

L'emplacement du fichier est enregistré sans problème. Ensuite, une ligne après vérification qu'il a été enregistré, il indique que le fichier n'existe pas. Voici le code pertinent ainsi que le journal des erreurs. Je vais seulement inclure le code dans le crash, ce qui suit n'est pas pertinent mais peut être fourni si demandé. PSync.psbk est le fichier qui tente d'être lu. Franchement, je n'ai aucune idée de ce qui ne va pas, mais je suppose que c'est simple.

code:

Toast.makeText(Main.this, "Method properly called.", Toast.LENGTH_SHORT).show(); 
       //The file variable to imported. 
       File file; 

       try { 
        //Sets the file equal to the file found at the specified path. 
        //Used to access settings. 
        TinyDB database = new TinyDB(getApplicationContext()); 

        String strfilePath = database.getString("FilePath"); 
        Toast.makeText(Main.this, "Method properly called: " + strfilePath, Toast.LENGTH_SHORT).show(); 
        file = new File(strfilePath); 

        //To be used to arrange the imported information. 
        ArrayList<String> strAcc = new ArrayList<>(); 
        ArrayList<String> strUser = new ArrayList<>(); 
        ArrayList<String> strPass = new ArrayList<>(); 
        ArrayList<String> strAdditionalInfo = new ArrayList<>(); 

        //To be used to store all the information for additional info variables. This is 
        //due to its multi-line nature requiring a slightly different method of 
        //importation, the other variables are expected to be one line. 
        String strExtraInfo = ""; 

        //Goes through the file and adds info to arrays for each corresponding variable. 
        //If the line does not have an identifier, it assumes it to be an additional 
        //info line, and will be processed later. 
        try (BufferedReader br = new BufferedReader(new FileReader(file))) { //Line 776, as mentioned in err log. 

Err journal:

W/System.err: java.io.FileNotFoundException: /document/storage/emulated/0/Download/PSync.psbk (No such file or directory) 
    10-04 21:16:32.843 19405-19405/com.example.brand.psync W/System.err:  at java.io.FileInputStream.open(Native Method) 
    10-04 21:16:32.843 19405-19405/com.example.brand.psync W/System.err:  at java.io.FileInputStream.<init>(FileInputStream.java:146) 
    10-04 21:16:32.843 19405-19405/com.example.brand.psync W/System.err:  at java.io.FileReader.<init>(FileReader.java:72) 
    10-04 21:16:32.843 19405-19405/com.example.brand.psync W/System.err:  at com.example.brand.psync.Main.onRequestPermissionsResult(Main.java:776) 
+0

avez-vous donné la permission dans le manifeste –

+0

Oui, j'ai, et il demande également l'autorisation d'exécution. Il n'a aucun problème à lire le fichier lorsqu'il est au format file = new Fichier (Environment.getExternalStoragePublicDirectory (Environment.DIRECTORY_DOWNLOADS), "PSync.psbk"); – Prometheus

+0

@NabinBhandari, oui cet extrait de code est à l'intérieur de onRequestPermissionsResult. Le code ne s'exécute qu'une fois que l'autorisation a été accordée. Comme je l'ai dit à Amrutha, il n'y a pas de problème à lire le même fichier depuis le même répertoire quand j'utilise la méthode Environmemnt.get – Prometheus

Répondre

2

Le chemin que vous tentez d'accéder est:

/document/stockage/émulé/0/Télécharger/psync .psbk

Il ne doit pas y avoir de ligne /document dans votre chemin. Il peut y avoir un problème lors du stockage du chemin.

+0

Juste pour clarifier avant de tester, à quoi devrait ressembler le chemin? /storage/emulated/0/Download/PSync.psbk? – Prometheus

+0

Oui, vous avez raison. –

+0

Après avoir dit ça, j'ai décidé de tester quelque chose parce que je pensais que c'était bizarre. Je reçois le chemin du fichier en diffusant l'intention et en leur demandant d'utiliser un gestionnaire de fichiers. Pour une raison étrange, mon navigateur de fichiers principal l'a retourné comme "/document/storage/emulated/0/Download/PSync.psbk", mais en utilisant un navigateur de fichiers différent a retourné le bon chemin et lui a permis de travailler. Comme ce n'était pas une erreur dans le code, comment dois-je gérer répondre à cette question? Vérifiez juste le vôtre droit? Ou le supprimer car il n'était pas lié au code? – Prometheus