package byte_base;
import java.io.FileInputStream;
import java.io.IOException;
public class FileViewer {
public static void main(String[] args) {
int a;
try{
FileInputStream fis = new FileInputStream("FileViewerln.txt");
while((a = fis.read())!=-1){
System.out.write(a);
}
}catch(IOException ioe){
System.err.println(ioe);
ioe.printStackTrace();
}
}
}
它是程序,从文件中打印文本。
当我使用FileInputStream类和System.out.write()方法时,它运行得很好。
但是我尝试了另一种方式。
我使用了BufferedOutputStream而不是System.out.write()方法。
底部是使用BufferedOutputStream类的代码。
package byte_base;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
public class CopyOfFileViewer {
public static void main(String[] args) {
int a;
try{
FileInputStream fis = new FileInputStream("FileViewerln.txt");
BufferedOutputStream bos = new BufferedOutputStream(System.out);
while((a = fis.read())!=-1){
bos.write(a);
}
}catch(IOException ioe){
System.err.println(ioe);
ioe.printStackTrace();
}
}
}
但是这段代码的结果是真空。
我认为第一代码和第二代码非常相似。
为什么它(第二代码)不能正常工作?
最佳答案
您忘记关闭OutputStream bos
。
bos.close();
实际上,在“尝试资源”中进行操作会更好
try (FileInputStream fis = new FileInputStream("FileViewerln.txt");
BufferedOutputStream bos = new BufferedOutputStream(System.out);
) {
while((a = fis.read())!=-1){
bos.write(a);
}
} catch(IOException ioe){
System.err.println(ioe);
ioe.printStackTrace();
}
类
InputStream
实现Closeable
。因此,其子类可以在try-with-resources中使用。关于java - java BufferedOutputStream,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44289660/