2009-01-21 24 views
5

Unix'teki dosya izinlerini değiştirmek için kullanmam gereken bir kod parçası arıyorum. Projem .. java 1.4.2 üzerinde çalışan ..Java 1.4.2'deki dosya izinleri nasıl değiştirilir?

Saygılarımızla, Senny

+0

Olası kopyası [Dosyanın izni nasıl değiştirilir ve Java'da son değiştirilir?] (Http://stackoverflow.com/questions/459622/how-to-change-the-files-permission-and-last-modified -in-java) –

cevap

3

Sadece biri değilsin yapacağız kullanılması gerekirse

sadece örnek kod örneği veya yöntemleri: How to change the file's permission and last modified in Java?

Prensip olarak, mevcut java.io.File yöntemleri yeterli değilse Runtime.exec ("chmod ...") kullanabilirsiniz. Ama bu taşınabilir olmaz.

+0

Bunun için teşekkürler. Benim gibi görünmeyen yöntemim Windows içindi, şöyle ki: 'Runtime.exec ("attrib -r " –

1

Onlar JNI dayalı fonksiyonu hayata Ayrıca java.lang.File

ait Gnu CLASSPATH'E uygulanması bakabilir çağırır:

/** 
    * 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 uyguluyor mu:

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 çağrıyı beyan istenen işlev ...

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); 

Yani ... gerçekten istiyorsan, o source of cpio.c bakarak, bunu uygulamaya mümkündür: o standart kütüphaneden libc den chmod çağırır

(LibGW32C Windows'a bu işlevlerin bazı liman yapar)
0

Ekstra açıklık getirmek gerekirse: Java 1.6 dosya izinleri için File.canExecute() ve File.setExecutable (boolean) gibi alıcı/ayarlayıcıları tanıtır. Yani bir çözüm, bahsettiğiniz 1.4 yerine en son JDK'yı kullanmaktır. Aksi takdirde, önerildiği gibi, backport'u deneyebilir veya platforma özgü komutları çağırabilirsiniz.

İlgili konular