Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

558
Views
¿Cuál es el equivalente java.nio.file.Files de java.io.File.setWritable()?

El método java.io.File.setWritable() le permite configurar un archivo para que todos puedan escribir en sistemas de archivos que admitan esto de una manera independiente de la plataforma.

https://docs.oracle.com/javase/7/docs/api/java/io/File.html#setWritable(booleano,%20booleano)

¿Qué permite el comportamiento equivalente en el objeto java.nio.file.Path ?

El método estático java.nio.file.Files.setAttribute() implica que es posible establecer permisos,

Pero no hay un conjunto claro de parámetros que emule el método java.io.File.setWritable() .

https://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html#setAttribute(java.nio.file.Path,%20java.lang.String,%20java.lang. Objeto,%20java.nio.file.LinkOption...)

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

NIO amplía el IO de Java pero no es un reemplazo completo de las clases existentes. La clase java.io.File tampoco está en desuso. Para java.io.File.setWritable() no hay equivalente dentro de java.nio.file.Files . Como ya se mencionó en una respuesta anterior, aún puede convertir el objeto Path en un objeto File y llamar a setWritable .

NIO introduce la noción de vistas de atributos de archivos y permite acceder, por ejemplo, también a Listas de control de acceso (ACL) y atributos de archivos definidos por el usuario. Por ejemplo, en Windows, setWritable solo tiene efecto en el indicador de solo lectura (primera pestaña dentro del explorador de archivos) pero no tiene efecto en las ACL (consulte la pestaña de seguridad en el explorador de archivos). Incluso cuando llama a file.setWritable(false) , el propietario aún tendrá permisos para escribir, pero finalmente no podrá escribir debido al indicador de solo lectura establecido.

Dado que no todos los sistemas operativos son compatibles con POSIX (saludos a Redmond;-), no todas las vistas de atributos de archivo están disponibles en todos los sistemas operativos. El siguiente código haría más o menos lo mismo que java.io.File.setWritable :

 public static boolean setWriteable(Path path, boolean writeable) { try { PosixFileAttributeView posix = Files.getFileAttributeView(path, PosixFileAttributeView.class); if (posix != null) { // POSIX Set<PosixFilePermission> permissions = new HashSet<>(posix.readAttributes().permissions()); boolean changed = false; if (writeable) { changed = permissions.add(PosixFilePermission.OWNER_WRITE); } else { changed = permissions.remove(PosixFilePermission.OWNER_WRITE); } if (changed) { posix.setPermissions(permissions); } return true; } else { // Windows - does not support POSIX file permission view DosFileAttributeView dos = Files.getFileAttributeView(path, DosFileAttributeView.class); if (dos != null) { dos.setReadOnly(!writeable); } return true; } } catch (IOException e) { return false; } }

Entonces, si solo desea cambiar el indicador de solo lectura de un archivo, me quedaría con File.setWritable . Es simple y no tiene que preocuparse por el sistema operativo / vistas de atributos de archivo compatibles. Si necesita más (por ejemplo, cambiar el propietario/grupo de un archivo o leer/cambiar ACL), las vistas de atributos de archivo deben ser su elección.

over 4 years ago · Santiago Trujillo Report

0

Use 'setWritable' en el objeto de archivo asociado de la ruta:

 import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; public class Permissions { public static void main(String[] args) throws Exception { Path current = Paths.get("."); Path path = Files.createFile(current.resolve("permissions.txt")); path.toFile().setWritable(true, false); } }
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!