Согласно приведенному выше коду, вы пытаетесь подсчитать количество каждого алфавита.
Итак, для каждой буквы предположим, что вы используете одну корзину. Что сделано в new int [ALPHABET];
. Итак, у вас есть 26 слотов от 0 до 25.
Теперь, когда вы подсчитываете буквы:
Каждой букве присваивается значение (значение ASCII). Значение ASCII в нижнем регистре a a
равно 97. Но в вашем слоте вы хотите добавить a
в слот 0. Итак, что вы делаете: вы вычитаете 97, т.е. вы вычитаете значение a
для каждой буквы .
Итак, теперь a
сохраняется в слоте 0, b
в слоте 1 и т. Д.
Вы не единственный: Как изменить разрешение файла и в последний раз измененный в Java?
Вы могли, в принципе, использовать Runtime.exec ("chmod...") если существующий java.io. Методы файла не достаточно. Но это не было бы портативно.
Вы могли также посмотреть на Гну реализация ClassPath java.lang. Файл
Они реализовали функцию на основе вызовов JNI:
native/jni/java-io/java_io_VMFile.c:
set_file_permissions: new helper function.
Java_java_io_VMFile_setReadable: new native method to bakcup 1.6 methods
in VMFile.java.
VMFile.java объявляет вызов:
/**
* Set the write permission of the file.
*/
public static synchronized native boolean setWritable(String path,
boolean writable,
boolean ownerOnly);
native/jni/java-io/java_io_VMFile.c реализует желаемую функцию...
JNIEXPORT jboolean JNICALL
Java_java_io_VMFile_setWritable (JNIEnv *env,
jclass clazz __attribute__ ((__unused__)),
jstring name,
jboolean writable,
jboolean ownerOnly)
{
return set_file_permissions (env, name, writable, ownerOnly,
CPFILE_FLAG_WRITE);
}
[...]
result = cpio_chmod (filename, permissions);
Так..., если Вы действительно хотите это, возможно реализовать его путем рассмотрения источника cpio.c: это звонит chmod
из libc стандартной библиотеки (LibGW32C действительно портирует некоторые из тех функций к Windows),
Для большей ясности: Java 1.6 вводит геттеры / сеттеры, такие как File.canExecute () и File.setExecutable (логический) для прав доступа к файлам. Итак, одно из решений - использовать последний JDK вместо 1.4, о котором вы упомянули. В противном случае, как предлагается, вы можете попытаться выполнить резервное копирование или вызвать команды, специфичные для платформы.