【发布时间】:2017-06-13 10:28:55
【问题描述】:
我正面临一个相当不寻常的情况。我正在使用printWriter 和System.out
将文件中的字节打印到控制台上,首先使用ByteStreamReader,然后使用CharacterStreamReader。问题是在ByteStreamReader 的输出之后,随后的System.out.println 语句没有在控制台上打印任何内容。我尝试在System.out.flush() 上使用flush,但仍然没有得到输出。
代码:
FileStream fs = new FileStream(); //ByteStreamReader
String source = "./test_zh.txt";
CharacterStream cs = new CharacterStream(); //CharacterStreamReader
System.out.println("\nChinese Sentence using ByteStreamReader");
fs.printOnConsole(source); //if i comment this, then below lines gets printed
System.out.println("\nChinese Sentence using CharacterStreamReader");//Not getting printed on console
cs.printOnConsole(source); //Not getting printed on console
我的两种 Stream 类型的代码如下:
FileSteam 类
public void printOnConsole(String source) throws IOException{
try{
inp = new FileInputStream(source);
pwr = new PrintWriter(System.out,true);
int c =0;
while( (c = inp.read()) != -1){
pwr.write(c);
pwr.write("(" + c +")");
}
}catch(FileNotFoundException f){
}catch(IOException e){
}finally{
inp.close();
pwr.flush();
pwr.close();
}
}
CharacterStream 类
public void printOnConsole(String source) throws IOException{
try{
fReader = new FileReader(source);
pwr = new PrintWriter(System.out,true);
int c;
while((c = fReader.read()) != -1){
pwr.write(c);
pwr.write("(" +c +")");
}
}catch(IOException f){
}finally{
fReader.close();
pwr.flush();
pwr.close();
}
}
【问题讨论】:
-
可能发生的事情是您对
.close()的调用之一在内部关闭了它委托给的流,因此它关闭了System.out。 -
您可能遇到了异常。尝试在所有
catch中添加f.printStackTrace()。
标签: java printwriter system.out