Make file deletion more robust. Make file creation more robust.

Handle newlines rigorously when reading a file.
This commit is contained in:
jeb228 2010-05-25 20:31:09 +00:00
parent fbdba79833
commit 60958400f1

View file

@ -7,6 +7,7 @@ import static junit.framework.Assert.fail;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileFilter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
@ -148,9 +149,29 @@ public abstract class AbstractTestClass {
*/
protected static void deleteFile(File file) {
if (file.exists()) {
if (!file.delete()) {
fail("Unable to delete file '" + file.getPath() + "'");
}
file.delete();
}
if (!file.exists()) {
return;
}
/*
* If we were unable to delete the file, is it because it's a non-empty
* directory?
*/
if (!file.isDirectory()) {
final StringBuffer message = new StringBuffer(
"Unable to delete directory '" + file.getPath() + "'\n");
file.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
message.append(" contains file '" + pathname + "'\n");
return true;
}
});
fail(message.toString().trim());
} else {
fail("Unable to delete file '" + file.getPath() + "'");
}
}
@ -225,12 +246,22 @@ public abstract class AbstractTestClass {
Writer writer = null;
try {
File file = new File(directory, filename);
if (file.exists()) {
throw new IOException("File '" + file.getPath()
+ "' already exists.");
}
file.createNewFile();
writer = new FileWriter(file);
writer.write(contents);
return file;
} finally {
writer.close();
if (writer != null) {
try {
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
@ -254,11 +285,17 @@ public abstract class AbstractTestClass {
protected static String readAll(Reader reader) throws IOException {
StringBuilder result = new StringBuilder();
BufferedReader buffered = new BufferedReader(reader);
String line;
while (null != (line = buffered.readLine())) {
result.append(line).append('\n');
char[] chunk = new char[4096];
int howMany;
try {
while (-1 != (howMany = buffered.read(chunk))) {
result.append(chunk, 0, howMany);
}
} finally {
reader.close();
}
reader.close();
return result.toString();
}