What does the term "normalize" mean in this context? I thought the issue being discussed was parsing an uploaded filename to get just the filename sans path, as IE sends... where uploads from Windows to a Unix server means that if you use the File.pathSeparatorChar to parse the name, you would really be looking for the opposite of what you should be using?
-- Frank W. Zammetti Founder and Chief Software Architect Omnytex Technologies http://www.omnytex.com On Fri, June 10, 2005 1:17 am, Dakota Jack said: > 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] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]