Java 7ファイルAPIを使用しています。Ubuntuでディレクトリを完全に作成するために正常に機能するクラスを作成しましたが、Windowsで同じコードを実行すると、エラーがスローされます。
Exception in thread "main" Java.lang.UnsupportedOperationException: 'posix:permissions' not supported as initial attribute
at Sun.nio.fs.WindowsSecurityDescriptor.fromAttribute(Unknown Source)
at Sun.nio.fs.WindowsFileSystemProvider.createDirectory(Unknown Source)
at Java.nio.file.Files.createDirectory(Unknown Source)
at Java.nio.file.Files.createAndCheckIsDirectory(Unknown Source)
at Java.nio.file.Files.createDirectories(Unknown Source)
at com.cloudspoke.folder_permission.Folder.createFolder(Folder.Java:27)
at com.cloudspoke.folder_permission.Main.main(Main.Java:139)
私のフォルダクラスコードは
package com.cloudspoke.folder_permission;
import Java.io.IOException;
import Java.nio.file.Files;
import Java.nio.file.Path;
import Java.nio.file.attribute.FileAttribute;
import Java.nio.file.attribute.PosixFilePermission;
import Java.nio.file.attribute.UserPrincipal;
import Java.util.Set;
public class Folder{
// attributes required for creating a Folder
private UserPrincipal owner;
private Path folder_name;
private FileAttribute<Set<PosixFilePermission>> attr;
public Folder(UserPrincipal owner,Path folder_name,FileAttribute<Set<PosixFilePermission>> attr){
this.owner=owner;
this.folder_name=folder_name;
this.attr=attr;
}
//invoking this method will create folders
public void createFolder(){
try {
//createDirectories function is used for overwriting existing folder instead of createDirectory() method
Files.createDirectories(folder_name, attr);
Files.setOwner(folder_name, owner);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("created Folder "+this.folder_name);
}
}
エラーはcreateFolder
のFolder
メソッドから発生しています。
このエラーを解決するにはどうすればよいですか?
POSIXと互換性のあるオペレーティングシステムでのみ使用できるPosixFilePermission
を使用します。
A file attribute view that provides a view of the file attributes commonly associated with files on file systems used by operating systems that implement the Portable Operating System Interface (POSIX) family of standards.
_Operating systems that implement the POSIX family of standards commonly use file systems that have a file owner, group-owner, and related access permissions. This file attribute view provides read and write access to these attributes
_
残念ながら、WindowsはPOSIXファイルシステムをサポートしていないため、コードが機能しません。 Windowsでディレクトリを作成するには、次を使用する必要があります。
new File("/path/to/folder").mkdir();
_/
_は、Windowsでは自動的に_\
_に変更されます。パス全体を一度に作成する場合は、mkdirs()
メソッドを使用する必要があります。詳細: http://docs.Oracle.com/javase/6/docs/api/Java/io/File.html
Windowsでファイルのアクセス許可を設定するには、setReadable()
、setWritable()
、およびsetExecutable()
を使用する必要があります。これはFile
クラスのメソッドであり、ファイル所有者の権限のみを設定します。上記のメソッドがJava 1.6で追加されたことに注意してください。古いバージョンでは(Windowsバージョン)を使用する必要があります。
Runtime.getRuntime().exec("attrib -r myFile");