2010-12-01 29 views
8

Estoy en una etapa de refactorización para un proyecto en el que estoy trabajando y me gustaría realizar algunas mejoras en la forma de compilar y representar las rutas del sistema de archivos. ¿Qué cosas debo tener en cuenta cuando represento las rutas relativas en el código Java para garantizar la compatibilidad en Ubuntu, OSX y Windows 7.Creación y representación de rutas de archivos multiplataforma

Actualmente, para obtener una instancia de referencia de archivo "MyProject/foo/bar.f" tendría código en la línea de:

File bar = new File(ProjectDirectory + "/" + FooResourceDirectory + "/" + barName);

Esto parece un error por varias razones, ¿cuáles son algunas de las mejores prácticas?

Respuesta

12

Tal vez utilizan los constructores proporcionados a hacer este tipo de cosas:

new File(parent, child) 

Tienes que "nido" de ellos, pero es trivial para manejar esto (por ejemplo, hacer una función para obtener un camino construido a partir de algo que toma . string...)

Véase el File constructors.

+0

File.pathSeparator es parte de lo que estaba buscando originalmente, pero creo que me gusta la idea de usar los constructores incorporados, y anidar/tener una función de envoltura más. –

9

En primer lugar se debe utilizar File.separator File.pathSeparator en lugar de "/".

+3

Atención: File.pathSeparator = File.separator - File.pathSeparator (por ejemplo, "/") es el carácter para separar las partes de un camino, y File.separator (por ejemplo ";") es el personaje para separar diferentes rutas – Ralph

+1

Prefiero usar el constructor correcto a través de: 'new File (parent, child)' –

+1

@Ralph, creo que lo has mezclado. ";" <-> "/" – lrxw

Cuestiones relacionadas