Saltar al contenido

¿Cambiar el directorio de trabajo actual en Java?

Solución:

No hay una forma confiable de hacer esto en Java puro. Establecer el user.dir propiedad a través de System.setProperty() o java -Duser.dir=... parece afectar las creaciones posteriores de Files, pero no por ejemplo FileOutputStreams.

los File(String parent, String child) El constructor puede ayudar si crea la ruta de su directorio por separado de la ruta de su archivo, lo que permite un intercambio más fácil.

Una alternativa es configurar un script para ejecutar Java desde un directorio diferente, o usar código nativo JNI como se sugiere a continuación.

El error de Sun relevante se cerró en 2008 porque “no se solucionará”.

Si ejecuta su programa heredado con ProcessBuilder, podrá especificar su directorio de trabajo.

Allí es una forma de hacer esto usando la propiedad del sistema “user.dir”. La parte clave para entender es que se debe llamar a getAbsoluteFile () (como se muestra a continuación) o de lo contrario las rutas relativas se resolverán contra el defecto Valor “user.dir”.

import java.io.*;

public class FileUtils
{
    public static boolean setCurrentDirectory(String directory_name)
    {
        boolean result = false;  // Boolean indicating whether directory was set
        File    directory;       // Desired current working directory

        directory = new File(directory_name).getAbsoluteFile();
        if (directory.exists() || directory.mkdirs())
        {
            result = (System.setProperty("user.dir", directory.getAbsolutePath()) != null);
        }

        return result;
    }

    public static PrintWriter openOutputFile(String file_name)
    {
        PrintWriter output = null;  // File to open for writing

        try
        {
            output = new PrintWriter(new File(file_name).getAbsoluteFile());
        }
        catch (Exception exception) {}

        return output;
    }

    public static void main(String[] args) throws Exception
    {
        FileUtils.openOutputFile("DefaultDirectoryFile.txt");
        FileUtils.setCurrentDirectory("NewCurrentDirectory");
        FileUtils.openOutputFile("CurrentDirectoryFile.txt");
    }
}
¡Haz clic para puntuar esta entrada!
(Votos: 1 Promedio: 4)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *