
お世話になっております。
現在、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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- その他(プログラミング・Web制作) セレクトボックスで選択された値をコントローラーで使用したい 2 2022/07/26 16:41
- Visual Basic(VBA) outlook マクロが終了しません。 1 2022/09/02 11:14
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) エクセルのマクロについて教えてください 物件ごとのフォルダを作成してます そのフォルダ内にサブフォル 2 2023/07/02 17:58
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) Excel VBA 同じ名前のフォルダがあれば作成したブックを格納するマクロをつくりたい 2 2023/01/16 16:19
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBA 画像を貼り付ける...
-
サーブレットコンテキストの意...
-
HashSetのremoveで例外発生します
-
VB.netでメソッドからコントロ...
-
Excel VBA 定数にオブジェクト...
-
C#のクラスで値渡しをする
-
String型からlong型への変換は...
-
javaScriptで画面に値を入れるには
-
VB.NETでのnothing の意義について
-
C#でのExcel操作について.(Ran...
-
UTF-8のテキストファイルを開く...
-
エクセルVBA/SpecialCellsで特...
-
[ASP.NET]DropDownListのDB連携...
-
C#で親にイベントを投げる方法
-
JSPでのArrayListの表示につい...
-
MessageBox.Show(Me,…の「Me」...
-
WSH OpenTextFile クローズでき...
-
vectorの内容をString型に変換...
-
「タイプ初期化子が例外をスロ...
-
エクセルVBAで、条件に一致する...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA 画像を貼り付ける...
-
Excel VBA 定数にオブジェクト...
-
VB.netでメソッドからコントロ...
-
サーブレットコンテキストの意...
-
VBAでの[]
-
Vba ListViewの行挿入に関して...
-
C#のクラスで値渡しをする
-
C#で親にイベントを投げる方法
-
VB.NETでのnothing の意義について
-
javaで、、、
-
Javaでブラウザ判定
-
System.Collections.SortedList
-
VB2005でADDとINSERTの違いは?
-
servletからjspへオブジェクト...
-
mkdirsでフォルダが作成されない
-
String型からlong型への変換は...
-
JSPでのArrayListの表示につい...
-
UTF-8のテキストファイルを開く...
-
エクセルVBA/SpecialCellsで特...
-
PrintFormを使用してのプリント
おすすめ情報