1

ネットワークにマップされたドライブ(Z :)にフォルダを作成するJavaがあります。 スクリプトはサーバーAで実行されます(Windows 2008 R2、ユーザーアカウント "serviceUser"として実行)サーバB(Windows 2003)上にフォルダを作成するフォルダを作成しても継承されない権限がある

サーバBのルートフォルダ(Z:にマップされています)に特別な権限があり、 "serviceUser"が作成、変更、削除、書き込みなどを行うことができます。パーミッションは子オブジェクトを継承するように設定されているので、Z:で作成されたフォルダはZ:と同じパーミッションを取得する必要があります。以下のような:

私のコードは、Z内部の2つのフォルダを作成

File destination = new File("z:\\folder_1\\"); 
File destination = new File("z:\\folder_1\\subfolder_1\\"); 

フォルダ "folder_1を" 適切なアクセス許可が、 "subfolder_1" を取得しません。 それらのフォルダを作成した後、私は、ファイルを作成する必要がありますが、「subfolder_1は」許可を取得しないように私はこの問題を解決するにはどうすればよいFile fileName = new File("z:\\folder_1\\subfolder_1\\filename.png");

を行うときに、コンソールが"Access is denied"を報告しますか?

答えて

1

mkdirsコマンドを試しましたか? OSに委任して、必要なすべてのディレクトリを作成します。

File destination = new File("z:\\folder_1\\subfolder_1"); 
destination.mkdirs(); 
+0

ディレクトリが存在するかどうか最初に確認する方がよいでしょうか? 'if(!destination.exists())destination.mkdir();' –

+0

はい、それは質問の範囲にはありませんでした。 –

+0

私はそれがOPのために起こっているシナリオだとは思わないが、そのプレチェックを行うことに全く間違いがない。 mkdirs呼び出しは、指定されたパス内の既存のディレクトリをすべて無視します。 – Perception

1

あなたのfolder2にsetReadable()および/またはsetWritable()を使用してください。これは、ファイルアクセス権を制御するポータブルな純粋なJavaの方法です。

+0

私は、アクセス時に同じ問題を拒否しました。 'File destination = new File(FolderPath); destination.setReadable(true、false); destination.setWritable(true、false); ' – user706058

0

私がこの作業を行ううえで唯一成功したのは、フルコントロールでサーバーBの管理者としてユーザーアカウントを設定することでした。

関連する問題