mirror of
https://github.com/github/codeql.git
synced 2025-12-17 09:13:20 +01:00
132 lines
3.0 KiB
Java
132 lines
3.0 KiB
Java
import java.io.BufferedWriter;
|
|
import java.io.ByteArrayOutputStream;
|
|
import java.io.CharArrayWriter;
|
|
import java.io.Closeable;
|
|
import java.io.FileOutputStream;
|
|
import java.io.FileWriter;
|
|
import java.io.IOException;
|
|
import java.io.OutputStream;
|
|
import java.io.OutputStreamWriter;
|
|
import java.io.StringWriter;
|
|
import java.io.Writer;
|
|
import java.util.zip.ZipFile;
|
|
|
|
class CloseWriter {
|
|
|
|
void test1() throws IOException {
|
|
BufferedWriter bw = new BufferedWriter(new FileWriter("C:\\test.txt"));
|
|
bw.write("test");
|
|
}
|
|
|
|
void test2() throws IOException {
|
|
OutputStream out = new FileOutputStream("test.bin");
|
|
out.write(1);
|
|
}
|
|
|
|
void test3() throws IOException {
|
|
OutputStreamWriter writer = null;
|
|
try {
|
|
// OutputStreamWriter may throw an exception, in which case the ...
|
|
writer = new OutputStreamWriter(
|
|
// ... FileOutputStream is not closed by the finally block
|
|
new FileOutputStream("C:\\test.txt"), "UTF-8");
|
|
writer.write("test");
|
|
}
|
|
finally {
|
|
if (writer != null)
|
|
writer.close();
|
|
}
|
|
}
|
|
|
|
void testCorrect1() throws IOException {
|
|
BufferedWriter bw = null;
|
|
try {
|
|
bw = new BufferedWriter(new FileWriter("C:\\test.txt"));
|
|
bw.write("test");
|
|
}
|
|
finally {
|
|
if(bw != null)
|
|
bw.close(); // 'bw' is closed
|
|
}
|
|
}
|
|
|
|
void testCorrect2() throws IOException {
|
|
BufferedWriter bw = null;
|
|
try {
|
|
bw = new BufferedWriter(new FileWriter("C:\\test.txt"));
|
|
bw.write("test");
|
|
}
|
|
finally {
|
|
cleanup(bw); // 'bw' is closed within a helper method
|
|
}
|
|
}
|
|
|
|
void testCorrect3() throws IOException {
|
|
FileOutputStream fos = null;
|
|
OutputStreamWriter writer = null;
|
|
try {
|
|
fos = new FileOutputStream("C:\\test.txt");
|
|
writer = new OutputStreamWriter(fos);
|
|
writer.write("test");
|
|
}
|
|
finally {
|
|
if (fos != null)
|
|
fos.close(); // 'fos' is closed
|
|
if (writer != null)
|
|
writer.close(); // 'writer' is closed
|
|
}
|
|
}
|
|
|
|
void testCorrect4() throws IOException {
|
|
BufferedWriter bw = null;
|
|
try {
|
|
bw = new BufferedWriter(new FileWriter("C:\\test.txt"));
|
|
bw.write("test");
|
|
}
|
|
finally {
|
|
cleanup(null, bw); // 'bw' is closed within a varargs helper method, invoked with multiple args
|
|
}
|
|
}
|
|
|
|
void cleanup(Closeable... closeables) throws IOException {
|
|
for (Closeable c : closeables) {
|
|
if (c != null) {
|
|
c.close();
|
|
}
|
|
}
|
|
}
|
|
|
|
static class LogFile {
|
|
private BufferedWriter fileWr;
|
|
LogFile(String path) {
|
|
FileWriter fw = null;
|
|
try {
|
|
fw = new FileWriter(path);
|
|
} catch (IOException e) {
|
|
System.out.println("Error: File not readable: " + path);
|
|
System.exit(1);
|
|
}
|
|
init(fw);
|
|
}
|
|
private void init(OutputStreamWriter writer) {
|
|
fileWr = new BufferedWriter(writer);
|
|
}
|
|
public void writeStuff() throws IOException {
|
|
fileWr.write("test");
|
|
fileWr.close();
|
|
}
|
|
}
|
|
|
|
// Classes which should be ignored
|
|
void testIgnore() throws IOException {
|
|
Writer w1 = new CharArrayWriter();
|
|
w1.write("test");
|
|
|
|
Writer w2 = new StringWriter();
|
|
w2.write("test");
|
|
|
|
OutputStream o1 = new ByteArrayOutputStream();
|
|
o1.write(1);
|
|
}
|
|
}
|