20 package net.sf.gridarta.model.io;
23 import org.jetbrains.annotations.NotNull;
24 import org.jetbrains.annotations.Nullable;
57 public File
getCacheFile(@NotNull
final File file, @Nullable
final String prefix) {
58 final StringBuilder sb =
new StringBuilder();
59 for (File tmp = file; tmp !=
null; tmp = tmp.getParentFile()) {
60 final CharSequence
name = tmp.getName();
62 for (
int i = 0; i <
name.length(); i++) {
63 final char ch =
name.charAt(i);
64 if ((
'0' <= ch && ch <=
'9') || (
'a' <= ch && ch <=
'z') || (
'A' <= ch && ch <=
'Z') || ch ==
' ' || ch ==
'.' || ch ==
'-' || ch ==
'_') {
67 sb.insert(pos++,
'%');
68 final String str = Integer.toHexString(ch);
79 return new File(dir, sb.toString());