This method may fail to clean up (close, dispose of) a stream, database object, or other resource requiring an explicit cleanup operation. In general, if a method opens a stream or other resource, the method should use a try/finally block to ensure that the stream or resource is cleaned up before the method returns.
源代码如下
```java
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileSreamTest {
public static void main(String[] args) {
try {
FileInputStream in = new FileInputStream("input.txt");
FileOutputStream out = new FileOutputStream("output.txt");
int c;
while ((c = in.read()) != -1) {
out.write(c);
in.close();
out.close();
}
} catch (FileNotFoundException e) {
System.err.println("FileNotFoundException");
} catch (IOException e) {
System.err.println("IOException");
}
}
}
出现该错误原因:在while中关闭流,但是在类中打开流,流的打开和关闭必须在同一个中括号里
修改如下
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileSreamTest {
public static void main(String[] args) {
try {
FileInputStream in = new FileInputStream("input.txt");
FileOutputStream out = new FileOutputStream("output.txt");
int c;
while ((c = in.read()) != -1) {
out.write(c);
}
in.close();
out.close();
} catch (FileNotFoundException e) {
System.err.println("FileNotFoundException");
} catch (IOException e) {
System.err.println("IOException");
}
}
}
参考:
https://stackoverflow.com/questions/67188342/i-have-a-bug-method-may-fail-to-clean-up-stream-or-resource-in-findbugs-and-i
https://blog.csdn.net/weixin_44056920/article/details/103491490