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」はアクセス許可を取得しないため、"Access is denied"実行時にコンソールが報告しますFile fileName = new File("z:\\folder_1\\subfolder_1\\filename.png");

この問題を解決するにはどうすればよいですか?

4

3 に答える 3

1

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

File destination = new File("z:\\folder_1\\subfolder_1");
destination.mkdirs();
于 2011-07-09T16:22:39.437 に答える
1

使用してみてください: setReadable() および/または setWritable() を folder2 で使用します。これは、ファイルのアクセス許可を制御する唯一の移植可能な純粋な Java の方法です。

于 2011-07-09T16:24:09.380 に答える
0

これを機能させるために私が見つけた唯一の成功した方法は、ユーザー アカウントをフル コントロールを持つサーバー B の管理者として設定することでした。

于 2011-07-11T08:02:22.870 に答える