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

Reply via email to