String text;
try {
PrintStream pw2 = new PrintStream(new FileOutputStream("C:\\Users\\jadit\\Desktop\\ts.doc"));
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
text = br.readLine(); //Reading String
System.out.println(text);
pw2.print(text);
pw2.close();
isr.close();
br.close();
}
catch(Exception e) {
System.out.println(e);
}
int str;
try {
FileInputStream fr2 = new FileInputStream("C:\\Users\\jadit\\Desktop\\ts.doc");
BufferedInputStream br2 = new BufferedInputStream(fr2);
PrintStream pw1 = new PrintStream(System.out, true);
while ((str=br2.read()) >= 0)
pw1.println(" "+str);
fr2.close();
pw1.close();
br2.close();
}
catch(Exception e){}
输出:
run:
a b c d
a b c d
97
32
98
32
99
32
100
32
如果我试图在第二个尝试块中读取其他文件的内容,例如 t.txt ,那么它就不会执行或读取文件的内容 t.txt < / em>,但是当我正在读取在第一个try块中写入的同一文件的内容时,它将在输出中显示如上所示的内容。因此,即使在第一次尝试阻止本身并且在下一个尝试块中打开流时,为什么会发生这种情况呢?我们不能在同一个程序中的不同文件上以不同的方式工作吗?
答案 0 :(得分:0)
如果我对您的要求的理解是正确的,那么
从标准输入中读取内容并将其写入文件可以正常工作,但是您无法从文件中读取内容并将其写入标准输出。
以下代码将帮助您实现第二部分。
try
{
FileReader fr = new FileReader("C:\\Users\\jadit\\Desktop\\ts.doc");
BufferedReader br = new BufferedReader(fr);
String str = null;
while ((str = br.readLine()) != null)
{
System.out.println(str);
}
fr.close();
br.close();
}
catch(Exception e)
{
e.printStackTrace();
}
答案 1 :(得分:0)
好吧,你的第二个尝试catch块是打印文件中文本的ascii值,因为你打印'str'而不将其转换为字符
你需要做的是替换pw1.println(“”+ str);有了这个:
char c =(char)str;
pw1.println(“”+ c);
它将为您提供文件内容而不是其ascii值。