2011-06-08 6 views
4

J'utilise file.GetFreeSpace() de la classe Java dans mon application pour m'assurer qu'il y a assez de place avant de transférer des fichiers. Le chemin est un chemin unc qui a actuellement ~ 5TB d'espace libre sur lui. Cependant lorsque le code ci-dessus est exécuté, la quantité d'espace renvoyée est seulement 713998336 octets (~ 680 Mo). Je ai mappé l'application pour utiliser un autre chemin unc qui avait entre 100 Mo et un peu plus de 1 Go libre (j'ajoutais/supprimant les fichiers à tester) et l'application a rapporté la quantité d'espace libre là. MISE À JOUR: Grâce à beaucoup de débogage, j'ai trouvé le problème. Le chemin unc semblable à ceci: \\domain6\test\Scratch_Folder\ où Scratch_Folder est un espace de noms DFS avec ~ 5 To d'espace libre. Cependant lorsque file.getFreeSpace s'exécute, il renvoie l'espace libre pour \\domain6\test\ qui a seulement 670 Mo. Pourquoi cela arriverait-il?File.getFreeSpace() Ne pas retourner la valeur correcte

+0

Est-ce que 'getTotalSpace' fonctionne correctement (http://download.oracle.com/javase/6/docs/api/java/io/File.html#getTotalSpace%28%29)? –

+1

On dirait que vous souffrez d'un débordement de 32 bits. par exemple. 5 To - 4,2 milliards est d'environ 0,7 To. –

+0

@Vlad - getTotalSpace rapporte seulement '16096837632' (~ 15GB), où la taille totale est actuellement de 5.69TB – Saggio

Répondre

0

J'ai trouvé le problème! Java renvoyait la quantité d'espace libre dans la racine du DFS, pas le dossier réel du DFS (le Scratch_Folder s'affichait comme un raccourci). J'ai trouvé un chemin différent et plus direct vers le dossier qui ne contenait pas le raccourci, pointant l'application à la place et maintenant il fonctionne comme prévu.

0

Cela ressemble à un bug dans votre JVM. Cette fonctionnalité est nouvelle pour Java 6, pouvez-vous essayer Java 6 mise à jour 25. Lorsque je l'exécute pour un chemin UNC avec 9 To libre, je vois 9 To.

Questions connexes