/* * Deletes the file at the location passed. If the location is a * directory the method will return false. * Returns true if and only if the file was deleted; * returns false otherwise */ public static boolean deleteFile(File file) { if (file.isFile()) { if (file.delete()) { return true; } } return false; }
/* * Deletes the directory at the location passed. If deleteIfFull is true * then the method gets all the files in the directory and tries to delete * them. If deleteIfFull is false the method will attempt to delete the * directory. If the directory contains files, the method will return false. * Returns true if and only if the directory was deleted; * returns false otherwise */ public static boolean deleteDirectory(File dir, boolean deleteIfFull) { // Checks if the file exists and if it is actually a directory if (dir.exists() && dir.isDirectory()) { // Checks if deleteIfFull is true if (deleteIfFull) { // Goes through each file in the directory and attempts to delete them File[] files = dir.listFiles(); if (files != null) { for (File f : files) { f.delete(); } } } // If the directory was deleted successfully then return true if (dir.delete()) { return true; } } // Return false otherwise return false; }
public static void main(String[] args) throws Exception { blah = File.createTempFile("blah", null); blah.deleteOnExit(); initTestFile(blah); try { out.println("Test file " + blah + " initialized"); testZero(); out.println("Zero size: OK"); testRead(); out.println("Read: OK"); testWrite(); out.println("Write: OK"); testHighOffset(); out.println("High offset: OK"); testExceptions(); out.println("Exceptions: OK"); } finally { blah.delete(); } }
/** * deletes a given filename * * @param fileName * @return */ public static boolean delete(String fileName) { boolean returnVal = true; try { File target = new File(fileName); if (!target.exists()) { returnVal = false; } if (target.delete()) { returnVal = true; } else { returnVal = false; } } catch (SecurityException e) { returnVal = false; } return returnVal; }
/** @param workTokDir Token directory (common for multiple nodes). */ private void processTokenDirectory(File workTokDir) { for (File f : workTokDir.listFiles()) { if (!f.isDirectory()) { if (!f.getName().equals(LOCK_FILE_NAME)) { if (log.isDebugEnabled()) log.debug("Unexpected file: " + f.getName()); } continue; } if (f.equals(tokDir)) { if (log.isDebugEnabled()) log.debug("Skipping own token directory: " + tokDir.getName()); continue; } String name = f.getName(); int pid; try { pid = Integer.parseInt(name.substring(name.lastIndexOf('-') + 1)); } catch (NumberFormatException ignored) { if (log.isDebugEnabled()) log.debug("Failed to parse file name: " + name); continue; } // Is process alive? if (IpcSharedMemoryUtils.alive(pid)) { if (log.isDebugEnabled()) log.debug("Skipping alive node: " + pid); continue; } if (log.isDebugEnabled()) log.debug("Possibly stale token folder: " + f); // Process each token under stale token folder. File[] shmemToks = f.listFiles(); if (shmemToks == null) // Although this is strange, but is reproducible sometimes on linux. return; int rmvCnt = 0; try { for (File f0 : shmemToks) { if (log.isDebugEnabled()) log.debug("Processing token file: " + f0.getName()); if (f0.isDirectory()) { if (log.isDebugEnabled()) log.debug("Unexpected directory: " + f0.getName()); } // Token file format: gg-shmem-space-[auto_idx]-[other_party_pid]-[size] String[] toks = f0.getName().split("-"); if (toks.length != 6) { if (log.isDebugEnabled()) log.debug("Unrecognized token file: " + f0.getName()); continue; } int pid0; int size; try { pid0 = Integer.parseInt(toks[4]); size = Integer.parseInt(toks[5]); } catch (NumberFormatException ignored) { if (log.isDebugEnabled()) log.debug("Failed to parse file name: " + name); continue; } if (IpcSharedMemoryUtils.alive(pid0)) { if (log.isDebugEnabled()) log.debug("Skipping alive process: " + pid0); continue; } if (log.isDebugEnabled()) log.debug("Possibly stale token file: " + f0); IpcSharedMemoryUtils.freeSystemResources(f0.getAbsolutePath(), size); if (f0.delete()) { if (log.isDebugEnabled()) log.debug("Deleted file: " + f0.getName()); rmvCnt++; } else if (!f0.exists()) { if (log.isDebugEnabled()) log.debug("File has been concurrently deleted: " + f0.getName()); rmvCnt++; } else if (log.isDebugEnabled()) log.debug("Failed to delete file: " + f0.getName()); } } finally { // Assuming that no new files can appear, since if (rmvCnt == shmemToks.length) { U.delete(f); if (log.isDebugEnabled()) log.debug("Deleted empty token directory: " + f.getName()); } } } }