Skip to content

Commit cda54fc

Browse files
committed
- Fixed bug deleting directories with files and/or subfolders in the Directory class.
- Removed debug print statement in the Image class. git-svn-id: svn://192.168.0.80/JavaXT/javaxt-core@1619 2c7b0aa6-e0b2-3c4e-bb4a-8b65b6c465ff
1 parent a93a11b commit cda54fc

File tree

2 files changed

+67
-5
lines changed

2 files changed

+67
-5
lines changed

src/javaxt/io/Directory.java

Lines changed: 66 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -286,8 +286,9 @@ public boolean isEmpty(){
286286
//**************************************************************************
287287
//** Create Directory
288288
//**************************************************************************
289-
/** Used to create the directory. */
290-
289+
/** Used to create the directory. Returns true if the directory was
290+
* successfully created.
291+
*/
291292
public boolean create(){
292293
return getFile().mkdirs();
293294
}
@@ -296,9 +297,70 @@ public boolean create(){
296297
//**************************************************************************
297298
//** Delete Directory
298299
//**************************************************************************
299-
/** Used to delete the directory. */
300-
300+
/** Used to delete the directory. Returns true if the directory was
301+
* successfully deleted.
302+
*/
301303
public boolean delete(){
304+
305+
306+
//Delete files and generate an ordered list of subfolders
307+
TreeMap<Integer, HashSet<java.io.File>> paths = new TreeMap<>();
308+
List files = getChildren(true, null, false);
309+
Object obj;
310+
while (true){
311+
synchronized (files) {
312+
while (files.isEmpty()) {
313+
try {
314+
files.wait();
315+
}
316+
catch (InterruptedException e) {
317+
break;
318+
}
319+
}
320+
obj = files.remove(0);
321+
files.notifyAll();
322+
}
323+
324+
325+
if (obj==null){ //file search is complete
326+
break;
327+
}
328+
else{
329+
if (obj instanceof javaxt.io.File){
330+
javaxt.io.File f = (javaxt.io.File) obj;
331+
f.delete();
332+
}
333+
else{
334+
javaxt.io.Directory dir = (javaxt.io.Directory) obj;
335+
336+
int numFolders = 0;
337+
javaxt.io.Directory d = dir.clone();
338+
while (!d.equals(this)){
339+
d = d.getParentDirectory();
340+
numFolders++;
341+
}
342+
343+
344+
HashSet<java.io.File> set = paths.get(numFolders);
345+
if (set==null){
346+
set = new HashSet<>();
347+
paths.put(numFolders, set);
348+
}
349+
set.add(dir.toFile());
350+
}
351+
}
352+
}
353+
354+
355+
//Delete subfolders
356+
for (Integer numFolders : paths.descendingKeySet()){
357+
for (java.io.File d : paths.get(numFolders)){
358+
d.delete();
359+
}
360+
}
361+
362+
363+
302364
if (getFile().delete()){
303365
attr = null;
304366
return true;

src/javaxt/io/Image.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2086,7 +2086,7 @@ public IIOMetadataNode[] getUnknownTags(int MarkerTag){
20862086
if (marker==MarkerTag) markers.add((IIOMetadataNode) unknownNode);
20872087
}
20882088
catch(Exception e){
2089-
e.printStackTrace();
2089+
//e.printStackTrace();
20902090
}
20912091
}
20922092
}

0 commit comments

Comments
 (0)