in reply to Re^3: Shorten windows paths too long (trim)
in thread Shorten windows paths too long

There is also a post that suggests an obvious solution: Don't generate path's with more than 255 chars! Explain to your users why this is important and a big pain in the ass to deal with and they will understand it.
Oh gee, sure, I never thought of that suggestion. *eyerolling*. I have on numerous occasions suggested to the java dingleberry developers I work with that perhaps having a class called "findthefarmerwhohasthemostacerageandaskhimifhedliketobuyatractor.java" might be a candidate for abbreviation.

Apparently making me happy and their own lives less complicated is not their priority.

I created a hash in the code I added to my original post to do the very thing you suggest, a substitution table.
Unfortunately I can't seem to get the substitute command to actually do the job.

I will try your stat suggestion and hopefully that will give me help.

Thank you for responding with a thoughtful and very readable answer btw.

  • Comment on Re^4: Shorten windows paths too long (trim)

Replies are listed 'Best First'.
Re^5: Shorten windows paths too long (trim)
by Marshall (Canon) on Aug 19, 2010 at 22:55 UTC
    Hi! I didn't mean to sound flippant.

    I've used this "translation table" idea before in a number of different contexts. In this context, I would split the path name into name tokens (stuff between /'s). Apply the translator to the dir names, if and only if it is a complete match to your translation table. Don't substitute on partial strings. Then reassemble the path name using join().

    You have no chance to fiddle with the final target: "findthefarmerwhohasthemostacerageandaskhimifhedliketobuyatractor.java", BUT along the way to this end file target, there will be perhaps, "thisisaclassoffolkswhoarefarmersandtheirmothersmadiennamewaswoo_hoo /findthefarmerwhohasthemostacerageandaskhimifhedliketobuyatractor.java". I put a space after woo_hoo for display purposes.

    I would think that these Java folks have some naming convention for these intermediate directories - that is the target of your translation table. Probably just a handful of these names shortened to other names will do it. One trick is that you want to be able to translate in both directions.

    I wish you well. This is a mess when the other folks won't cooperate at least to a small extent. You have my sympathy.

    In a completely general case, this approach will not work. But I suspect that you are in a situation where <10 names in the translation table will work and that is a small enough number that you can manage this process.