jueves, 4 de octubre de 2007

How to specify platform independent file path?

How to specify platform independent file path?
WINDOWS
File.separatorChar: \
File.separator: \
File.pathSeparator: ;
File.pathSeparatorChar: ;

LINUX
File.separatorChar: /
File.separator: /
File.pathSeparator: ;
File.pathSeparatorChar: ;


Y una función para obtener el path url del archivo:
protected String damePathURL(String serverPathFile){
try{
return serverPathFile.replaceAll(File.separator, "/");
}catch(Exception e){
//lanzaría una excepción de tipo java.util.regex.PatternSyntaxException al intentar sustituir el File.Separator=\
return serverPathFile.replaceAll(File.separator+File.separator, "/");
}
}

3 comentarios:

ben dijo...

Para obtener el nombre del fichero independientemente de la plataforma del cliente y del servidor yo hize esto (gracias a ti para la inspiracion!):


import java.io.*;

public class test {
public static void main(String[] args) throws Exception
{
String fileWin="c:\\Windows\\My Documents\\mamamia.txt";
String fileUnix="/home/benjamin/myfile.txt";
System.out.println(new File(substFileSeparator(fileWin)).getName());
System.out.println(new File(substFileSeparator(fileUnix)).getName());
}

static String substFileSeparator(String PathFile){
String oldSep="\\";
try{
if ( File.separator.equals(oldSep) ) // we are in windows
oldSep="/";
return PathFile.replaceAll(oldSep, File.separator);
}catch(Exception e){
//may throw a java.util.regex.PatternSyntaxException//
return PathFile.replaceAll(oldSep+oldSep,File.separator);
}
}// substFileSeparator

}//class


sale:

$ java -cp . test
mamamia.txt
myfile.txt

Anónimo dijo...

Menos mal!!!
Después de varias horas de pruebas...
el maravilloso "File.separator+File.separator"acabó con mis problemas sobre Windows!!!
Mis benciones por el post! :)

Anónimo dijo...

Mil millones de gracias!!!!!!!!