2013-05-04 1 views
1

J'essaie de comprendre "Comment accéder au fichier en passant le chemin relatif d'un fichier ou d'un dossier?" . Voici l'exemple:Comment accéder à un fichier en passant un chemin relatif dans java?

CODE:

public class somex { 
    public static void main { 
     String fileName = System.getProperty("user.dir"); <---This gives me path for the current working directory. 
     File file = new File(fileName + "../../xml_tutorial/sample.xlsx"); 
     System.out.println(file.getCanonicalPath());   <---This gives me path for the file that is residing in folder called "xml_tutorial". 
    } 
    } 

    >>>> 

Ici, je sais que l'emplacement du fichier pour que j'ai pu passer un chemin relatif correct. Et, réussi à imprimer le chemin du fichier. J'ai supprimé le "sample.xlsx" et exécuté le code ci-dessus; Sans échec, il me donne le nom du chemin et c'est le même chemin que lorsque le fichier existe (c'est-à-dire avant la suppression). Comment c'est possible ? Je m'attends à EXCEPTION ici. pourquoi ne lance-t-il pas l'exception? Deux, je veux utiliser l'expression régulière pour le nom de fichier, tel que: "../../xml_tutorial/samp.*". Mais cela ne fait pas le travail et ça me donne une IOException. Pourquoi n'est-il pas capable d'identifier le fichier sample.xlsx? (NOTE: ceci est quand le dossier existe et cent cent sûr qu'il y a un seul fichier avec le nom "sample.xlsx")

+0

1. Vous pouvez vérifier le fichier avec la méthode file.exists(). 2. Java ne supporte pas les caractères génériques, vous pouvez trouver réponse ici http://stackoverflow.com/questions/794381/how-to-find-files-that-match-a-wildcard-string-in-java –

+1

Veuillez demander ** une ** question par question. –

Répondre

3

J'ai supprimé le "sample.xlsx" et ai exécuté le code ci-dessus; Sans échec, il me donne le nom du chemin et c'est le même chemin que lorsque le fichier existe (c'est-à-dire avant la suppression). Comment c'est possible ? Je m'attends à EXCEPTION ici. pourquoi ne lance-t-il pas l'exception?

File ne se soucie pas de savoir si le fichier existe réellement. Il résout juste le chemin . Il n'y a pas besoin pour le fichier d'exister afin de prendre le chemin

/home/tjc/a/b/c/../../file.txt

... et la transformer en la forme canonique

/home/tjc/a/file.txt

Si vous voulez savoir si le fichier sur ce chemin réellement existe, vous pouvez utiliser le exists() method.


Sur votre deuxième question, sans rapport avec:

Deux, je veux utiliser une expression régulière pour le nom de fichier, par exemple: "../../xml_tutorial/samp.*". Mais cela ne fait pas le travail et ça me donne une IOException. Pourquoi n'est-il pas capable d'identifier le fichier sample.xlsx?

Rien dans le File documentation ne dit qu'il prend en charge les caractères génériques. Si vous voulez faire des recherches, vous voudrez utiliser list(FilenameFilter) ou listFiles(FilenameFilter) et une implémentation FilenameFilter, ou listFiles(FileFilter) et une implémentation FileFilter.

Questions connexes