お世話になっております。
現在、javaにてファイルからフォルダの階層情報を読み取り
所定のパスに取得したフォルダ構成を作成するバッチの作成をしているのですが、
Fileオブジェクトのmkdirsメソッドを使用してもうまくフォルダが作成されません。
//呼び出し元メソッド
public static void main(String[] args)
{
List<String> fldList = new ArrayList();
//フォルダ情報の取得は成功しているので割愛
Enumeration enu = Enumeration取得メソッド。
while(enu.hasMoreElements())
{
fldList.add(enu.nextElement().toString());
makeFld(fldList);
}
}
//--------フォルダ作成メソッド
private static void makeFld(List<String> fldList) throws Exception
{
StringBuilder sb = new StringBuilder();
sb.append(targetDir);
try
{
for(int i = 1; i < fldList.size() ; i++)
{
sb.append("\\");
sb.append(fldList.get(i).toString());
}
File outputFld = new File( sb.toString().trim() );
if(!outputFld.exists())
{
outputFld.mkdirs();
if(outputFld.exists())
{
System.out.println("フォルダの作成に成功しました");
}
}
else
{
System.out.println("ファイルが既に存在します。");
}
}
catch(Exception e )
{
throw e;
}
}
一度目の呼び出しでは
「c:\foldercreate\targetdir\dir1」
といったようなパスになっておりうまくフォルダが作成されるのですが
二度目の呼び出しで
「c:\foldercreate\targetdir\dir1\category1」
といったようなフォルダパスをFileオブジェクトのコンストラクトに渡しても
うまくmkdirsでフォルダが作成されません。
Fileオブジェクトのコンストラクタ、フォルダの書き込み権限等については問題がありません。
原因等がお分かりであればご教授のほどお願いします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
省略されている取得されたフォルダ構成が、どのように入っているかわかりません。
そのため、どのようにその情報を参照すればいいか、またどの順序でフォルダを作成すべきかかわかりません。
それで作ってみました。java7以降のFileVisitorを使っています。
-----実行前(AAAの配下のフォルダ構成を、BBB以下に作成する)
test
AAA
AAAA
AAAB
AAABA
BBB
-----実行後
test
AAA
AAAA
AAAB
AAABA
BBB
AAAA
AAAB
AAABA
---------
public class Test{
public static void main(String[] args) throws IOException{
final Path srcDir = FileSystems.getDefault().getPath("test/AAA");
final Path distDir = FileSystems.getDefault().getPath("test/BBB");
Files.walkFileTree(srcDir,new SimpleFileVisitor<Path>(){
@Override
public FileVisitResult preVisitDirectory(Path dir,
BasicFileAttributes attrs) throws IOException {
if(srcDir.equals(dir))return FileVisitResult.CONTINUE;
//** test/AAA から test/AAA/AAAB/AAABAへの相対パス(AAAB/AAABA)を取得する
String src = srcDir.relativize(dir).toString();
//** 取得した相対パスを満たすファルダをtest/BBB以下に作成する
new File(distDir.toFile(),src).mkdir();
return FileVisitResult.CONTINUE;
}
});
}
}
参考URL:http://docs.oracle.com/javase/jp/7/api/java/nio/ …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
servletからjspへオブジェクト...
-
「タイプ初期化子が例外をスロ...
-
エクセルVBAで、条件に一致する...
-
Labelコントロールに数字を代入...
-
staticと+=の意味を・・・
-
VBA 同じ名前のオブジェクトを...
-
同一パッケージにあるクラスが...
-
複数の変数を宣言する時、同時...
-
委譲って何ですか?
-
C#でオブジェクトの有無を取得する
-
JAVAからHTMLへ値を返す方法
-
「天声人語」をインターネット...
-
VB6のツールボックスへのコンポ...
-
A・B・Cクラスとは?
-
Accessの連結・非連結オブジェ...
-
中学2年です‼︎ 明日.学級の級長...
-
VB.NETでMSComm が追加できず?
-
public static void main (Stri...
-
BSアンテナのサイズ(札幌)に...
-
Excelで =EMBED("Acrobat Docu...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA 画像を貼り付ける...
-
VBAでの[]
-
サーブレットコンテキストの意...
-
VB.netでメソッドからコントロ...
-
C#のクラスで値渡しをする
-
servletからjspへオブジェクト...
-
Excel VBA 定数にオブジェクト...
-
javaで、、、
-
VB.NETでのnothing の意義について
-
JSPでのArrayListの表示につい...
-
String型からlong型への変換は...
-
Dispose()は、どんな時に使うの...
-
ピクチャーボックスに点を打つ...
-
PrintFormを使用してのプリント
-
Javaでブラウザ判定
-
Vba ListViewの行挿入に関して...
-
C#で親にイベントを投げる方法
-
VBスクリプトでテキストファイ...
-
mkdirsでフォルダが作成されない
-
ArrayListのデバッグ方法について
おすすめ情報