I have this code that generally creates directories within a directory.
File userFolder = new File(rootPath+"/media/"+userBean.getUsername());
File userPhotosDir = new File(rootPath+"/media/"+userBean.getUsername()+"/photos");
File userAudioDir = new File(rootPath+"/media/"+userBean.getUsername()+"/tracks");
userFolder.mkdir();
userPhotosDir.mkdir();
userAudioDir.mkdir();
When I this code runs it will generally look like this
The userFolder
\media\somename
The Photos folder
\media\somename\photos
The Audio Folder
\media\somename\folder
Where the photos and audio folder are inside the somename folder. while the somename folder is inside the media folder
-
\$\begingroup\$ what is the question? \$\endgroup\$tb-– tb-2013年01月25日 18:14:01 +00:00Commented Jan 25, 2013 at 18:14
2 Answers 2
Well, for the purpose of codereview:
- There is a
mkdirs()
methods instead of themkdir()
method - You can use the
new File(String, String)
constructor to avoid taking care of slashes If you have Java7, you can (and probably should) use
Path
. Especially, because there is a way to construct Paths with unlimited arguments, not only 2 as forFile
:Path dir = Paths.get(rootPath, "media", userBean.getUsername(), arg1); Files.createDirectories(dir);
You should check the return codes and errors. Could be helpful.
My main concern would be dealing with file path separators to construct long file paths. Luckily Java has File.separator
which can be used to to manually construct paths. However try not to use them if necessary, and get the File objects to do the path creation for you.
String rootPath = "/";
String username = "tom";
String mediaDir = "media"
File root = new File(rootPath);
File userFolder = new File(root, mediaDir + File.separator + username);
File photos = new File(userFolder, "photos");
File tracks = new File(userFolder, "tracks");
if (photos.isFile()) {
// delete it? Do something...
}
if (!photos.exists()) {
photos.mkdirs();
}
Like tb- suggests in his answer, if you have Java 7 you may also want to look into Paths, Path and Files