2011-07-27 15 views
7

FileUtils.copyDirectory() kullandığımda, yürütme bitleri yürütülebilir dosyalar için kapatılır.
Onları manuel olarak açmak zorunda mıyım?FileUtils.copyDirectory kullanırken dosya izinleri nasıl korunur?

FWIW, benim umask 0027 olarak ayarlandı ama yürütme biti dışında, 'diğer' izinleri korunduğundan bu ayarı kullanmıyor gibi görünüyor FileUtils.copyDirectory().

+0

Hangi işletim sistemini kullanıyorsunuz? Linux, FreeBSD ve Mac OS X arasında bir davranış farklıysa, şaşırmazdım ... – gutch

+0

Linux'tayım. Bir geçici çözümüm var, şirketimde Java 7'nin benimsenmesini bekleyeceğim. –

cevap

3

JVM sınırlamaları nedeniyle bunun mümkün olduğunu düşünmüyorum. IO API ve davranış, dünyanın en popüler dili/platformu için utanç verici. o dosya izinleri korunmaz bu

File copiedFile = new File(destDir, srcFile.getName()); 

gibi yeni dosya oluşturur kopyalama sırasında, FileUtils kaynak koduna baktığımızda

. Ve gerçek kopya sırasında, baytlar toplu olarak kopyalanır (arabelleğe alınır) ve yeni dosyaya yazılır.

Ancak, birkaç gün bekleyebilir veya bunun mümkün olması için apis'i olan JDK7'nin önizleme sürümünü kullanabilirsiniz.

5

Java 7'deki yaklaşan Filesystem eklentileri yardımcı olacaktır. JSR-203'e bakın. Linux kullanıyorsanız, backport'u Java 6 ile birlikte kullanabilirsiniz.

İstediğiniz yeni API: Files.copy(Path, Path, CopyOptions). CopyOptions'un ne istediğinizi yapacak COPY_ATTRIBUTES olduğunu unutmayın.

İlgili konular