Frank,

If the File class does not normalize the string used to create the
File, then there is a bug.  There seems to be a bug in one version of
Linux and that has been reported to Sun.  The constructor for File is
as follows:


    public File(String pathname) {
        if (pathname == null) {
            throw new NullPointerException();
        }
        this.path = fs.normalize(pathname);
        this.prefixLength = fs.prefixLength(this.path);
    }

Notice that an object fs is called to normalize the pathname.  The
object fs is created as a static field in all File classes as follows:


    static private FileSystem fs = FileSystem.getFileSystem();

The FileSystem class is an abstract class that has to be implemented,
of course, for the os on which it exists.  So, the basis for the class
is a JNI method:

    public static native FileSystem getFileSystem();

Sun did not go to all this trouble without expecting the actual
separators to be normalized to whatever system a file is created on,
so that no matter what your path happens to be in creating a File
object, file.getName() should return the name without a file
separator.  Is this helpful?



On 6/9/05, Frank W. Zammetti <[EMAIL PROTECTED]> wrote:
> Sorry guys, meant for this to go to the list only...
> 
> 
> 
> 
> On Thu, June 9, 2005 4:35 pm, Martin Cooper said:
> > Nope. If the upload came from a Windows system and the server is running
> on *nix, then the system separator is *not* what you want. You'd be
> looking for '/' in a path that uses '\' as the separator.
> 
> Good point.
> 
> OK, so thinking simplistically..
> 
>     final char PATH_SEP = File.pathSeparatorChar;
>     final char ANTI_PATH_SEP = File.pathSeparatorChar == '/' ? '\\' : '/';
> String test = "/sub/dev/test.txt";
>     int lastSep;
>     lastSep = test.lastIndexOf(PATH_SEP);
>     if (lastSep == -1) {
>       lastSep = test.lastIndexOf(ANTI_PATH_SEP);
>     }
> 
> Should do the trick, no?
> 
> > Martin Cooper
> 
> --
> Frank W. Zammetti
> Founder and Chief Software Architect
> Omnytex Technologies
> http://www.omnytex.com
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 


-- 
"You can lead a horse to water but you cannot make it float on its back."
~Dakota Jack~

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to