Вот текст статической подпрограммы из собственного класса Files (часто встречающиеся операции с файлами, сбор имён не требовался ), стирающей всё содержимое заданной директории. В т.ч. и рекурсивно (по параметру). Для чего требуется стереть все файлы и во всех вложенных директориях.Переработать в нужном направлении нетрудно, добавив параметр для сбора имён обнаруженных файлов и его заполнение в нужном формате:
/**
* Tries to remove all files (and sub-directories optionally) in the designated
* directory
*
* @param dir_path directory path to clear from other files and optionally
* directories
* @param recursive deletes sub-dirs also if set to {@code true}
* @return {@code true} if operation completed successfully that is no errors
* occurs during operation, else {@code false}
*/
public static boolean clearDirectory( String dir_path, boolean recursive )
{
File dir = new File( dir_path );
if ( !dir.isDirectory() )
{
return false;
}
boolean res = true;
String[] files = dir.list();
String fdir = Files.resetDir( dir_path );
String fpath;
StringBuffer sb = new StringBuffer();
for ( int i = 0; i < files.length; i++ )
{
sb.delete( 0, Integer.MAX_VALUE ).append( fdir ).append( files[ i ] );
File file = new File( fpath = sb.toString() );
if ( file.isDirectory() && recursive )
{
res = clearDirectory( fpath, recursive );
}
else
{
try
{
res = file.delete(); // TODO: здесь забирать конкретное имя фала в общий выходной массив
}
catch ( SecurityException se )
{
}
}
}
return res;
}
Вызываемый дополнительно код ниже:
/**
* The system-dependent default name-separator character. This field is
* initialised to contain the first character of the value of the system
* property file.separator. On UNIX systems the value of this field is '/'; on
* Microsoft Windows systems it is '\\'.
*/
public static final char FileSeparator = File.separatorChar;
/**
* The system-dependent default name-separator character. This field is
* initialised to contain the first character of the value of the system
* property file.separator. On UNIX systems the value of this field is '/'; on
* Microsoft Windows systems it is '\\'.
*/
public static final char FS = File.separatorChar;
/**
* appends system dependent file separator char
*
* @param FilePath - string to check for file separator existence
* @return new string with appended file separator or the same string if it
* already was present
*/
public static String appendFileSeparator( String FilePath )
{
return appendFileSeparator( FilePath, FileSeparator );
}
/**
* appends system dependent file separator char
*
* @param FilePath - string to check for file separator existence
* @param sep character to be a last separator in the input string
* @return new string with appended file separator or the same string if it
* already was present
*/
public static String appendFileSeparator( String FilePath, char sep )
{
if ( Text.isEmpty( FilePath ) )
{
return "" + sep;
}
char ch = FilePath.charAt( FilePath.length() - 1 );// get last symbol
if ( ( ch != '/' ) && ( ch != '\\' ) )// check it to be a separator one
{
return FilePath + sep;
}
else
{
return FilePath.substring( 0, FilePath.length() - 1 ) + sep;
}
}
/**
* the same as {@link #appendFileSeparator} but with shorter name :o)
*
* @param path path to append file separator
* @return path with trailing current file names separator
*/
public static String resetDir( String path )
{
if ( path == null )
{
return null;
}
return appendFileSeparator( path );
}