I find myself writing and using non-OO code around things like:
private final int MAX_FILE_NAME_LENGTH_WINDOWS = 255;
private final int MAX_FILE_NAME_LENGTH_LINUX = 255;
private final int MAX_FILE_NAME_LENGTH_MAC = 255;
private final int MAX_FILE_NAME_LENGTH_MAC_OS9 = 31;
private final int MAX_FILE_PATH_LENGTH_WINDOWS = 32000;
private final int MAX_FILE_PATH_LENGTH_LINUX = 4096;
private final int MAX_FILE_PATH_LENGTH_MAC = 1024;
But that is not even right for older Macs which limits file names to 31
chars.
I was thinking of creating a new enum:
package org.apache.commons.io;
public enum FileSystem {
LINUX(255, 4096),
MAC_OSX(255, 1024),
MAC_OSX_9(31, 1024),
WINDOWS(255, 32000);
private final long maxFileLength;
private final long maxPathLength;
private FileSystem(long maxFileLength, long maxPathLength) {
this.maxFileLength = maxFileLength;
this.maxPathLength = maxPathLength;
}
public long getMaxFileLength() {
return maxFileLength;
}
public long getMaxPathLength() {
return maxPathLength;
}
public boolean isIllegalFileName(char ch) {
...
}
public String toLegalFileName(String candidate, char replacement) {
...
}
}
I would also move the new method from
https://issues.apache.org/jira/browse/IO-555 there and rename
it "isIllegalFileName(char)"
Thoughts?
Gary