J'ai besoin de cacher des fichiers et des dossiers sur Windows et Linux. Je sais que l'ajout d'un '.' à l'avant d'un fichier ou un dossier le rendra caché sur Linux. Comment est-ce que je fais un dossier ou un dossier caché sur Windows?Rendre un fichier/dossier caché sous Windows avec Java
Répondre
Pour Java 6 et ci-dessous,
Vous aurez besoin d'utiliser un appel natif, voici une façon pour les fenêtres
Runtime.getRuntime().exec("attrib +H myHiddenFile.java");
Vous devriez apprendre un peu plus sur win32 api-ou Java Native.
La fonctionnalité que vous désirez est une caractéristique de NIO.2 dans le prochain Java 7.
Voici un article qui décrit comment il sera utilisé pour ce dont vous avez besoin: Managing Metadata (File and File Store Attributes). Il y a un exemple avec DOS File Attributes:
Path file = ...;
try {
DosFileAttributes attr = Attributes.readDosFileAttributes(file);
System.out.println("isReadOnly is " + attr.isReadOnly());
System.out.println("isHidden is " + attr.isHidden());
System.out.println("isArchive is " + attr.isArchive());
System.out.println("isSystem is " + attr.isSystem());
} catch (IOException x) {
System.err.println("DOS file attributes not supported:" + x);
}
attributs réglage peut être effectué à l'aide DosFileAttributeView
Compte tenu de ces faits, je doute qu'il ya une manière standard et élégante pour y parvenir en Java 6 ou Java 5.
ce que j'utilise:
void hide(File src) throws InterruptedException, IOException {
// win32 command line variant
Process p = Runtime.getRuntime().exec("attrib +h " + src.getPath());
p.waitFor(); // p.waitFor() important, so that the file really appears as hidden immediately after function exit.
}
Java 7 peut cacher un fichier DOS ainsi:
Path path = ...;
Boolean hidden = path.getAttribute("dos:hidden", LinkOption.NOFOLLOW_LINKS);
if (hidden != null && !hidden) {
path.setAttribute("dos:hidden", Boolean.TRUE, LinkOption.NOFOLLOW_LINKS);
}
Plus tôt Java-s ne peut pas.
Le code ci-dessus ne déclenchera pas d'exception sur les systèmes de fichiers non-DOS. Si le nom du fichier commence par un point, il sera également masqué sur les systèmes de fichiers UNIX.
La méthode getAttribute (String, LinkOption) est indéfinie pour le type java.nio.file.Path (JDK 7u13) – Antonio
Antonio, ça doit être comme ça dans la version préliminaire de Java 7 que j'ai utilisée. Je vois que la fonctionnalité similaire est maintenant dans java.nio.file.Files. –
Vous pouvez utiliser 'Files.setAttribute' qui acceptera un' Path' pour définir l'attribut. –
String cmd1[] = {"attrib","+h",file/folder path};
Runtime.getRuntime().exec(cmd1);
Utilisez ce code, il pourrait vous résoudre le problème
sur les fenêtres, en utilisant nio java, fichiers
Path path = Paths.get(..); //< input target path
Files.write(path, data_byte, StandardOpenOption.CREATE_NEW); //< if file not exist, create
Files.setAttribute(path, "dos:hidden", Boolean.TRUE, LinkOption.NOFOLLOW_LINKS); //< set hidden attribute
Veuillez ajouter une description de la façon dont le code que vous avez posté répond à la question de l'utilisateur – Suever
Voici un exemple de code Java 7 entièrement compilable qui cache un fichier arbitraire sous Windows .
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.DosFileAttributes;
class A {
public static void main(String[] args) throws Exception
{
//locate the full path to the file e.g. c:\a\b\Log.txt
Path p = Paths.get("c:\\a\\b\\Log.txt");
//link file to DosFileAttributes
DosFileAttributes dos = Files.readAttributes(p, DosFileAttributes.class);
//hide the Log file
Files.setAttribute(p, "dos:hidden", true);
System.out.println(dos.isHidden());
}
}
Pour vérifier que le fichier est caché. Faites un clic droit sur le fichier en question et vous verrez après l'exécution du tribunal que le fichier en question est vraiment caché.
- 1. Affichage d'un processus caché sous Windows?
- 2. Rendre un formulaire Windows existant héritable
- 3. Dans Java sous Windows, comment trouver un dossier Desktop redirigé?
- 4. Communication avec un pilote sur un réseau sous Windows
- 5. Rendre existants Application Windows fonctionnent sur linux
- 6. Avertissements fatals sous Windows
- 7. Rendre un périphérique Windows Mobile émule un périphérique Bluetooth HID
- 8. Comment démarrer Tomcat avec un server.xml spécifique sous Windows?
- 9. Empaquetage d'une application avec dépendances sous Windows
- 10. Programme Automation sous Windows avec VB.NET 2008
- 11. Debug DLL sous Windows avec GDB
- 12. PrintTestPage avec C# sous Windows Vista
- 13. Installer MySQL sous Windows Vista (avec IIS)
- 14. Comment travailler avec PHP sous Windows XP?
- 15. Modules dynamiques avec DLL sous Windows
- 16. Utilisation de Boost avec Cygwin sous Windows
- 17. Transparence PNG TrayIcon sous Windows
- 18. Java - Sortie de la console de contrôle sous Windows/Linux
- 19. Rendre php inclut du travail dans un sous-répertoire
- 20. Comment résoudre un lien javascript caché avec php?
- 21. Comment rendre un champ personnalisé avec to_xml?
- 22. Java simultané: Rendre l'accès webservice threadsafe
- 23. GHC + wxHaskell sous Windows
- 24. Comment spécifier une valeur de file.encoding Java cohérente avec la page de code Windows sous-jacente?
- 25. Communication interprocessus sous Windows
- 26. Comment chronométrer un programme s'exécutant sous Windows?
- 27. Comment lancer un script python sous Windows?
- 28. Comment générer un GUID sous Windows Mobile?
- 29. Comment renifler un port USB sous Windows?
- 30. Mono-service sous Windows
"native" signifie que vous utilisez la plate-forme code spécifique. 'exec()' déclenche un shell DOS/Windows pour exécuter un programme DOS/Windows. –
Vous êtes un épargnant de vie !!! –
que se passe-t-il lorsque ce code est exécuté sous Linux? Ou comment puis-je l'empêcher? – Xerus