一段代码,功能是输入文件名,输出文件内容。可以重复输入文件名:
import java.io.*;
import java.util.*;public class Test {
public static void main(String[] args){
while(true)
{
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
try{
String str = buf.readLine();
System.out.println(str);
FileReader f = new FileReader(str);
try{
int b;
while ((b=f.read()) != -1){
System.out.print((char)b);
}
}catch (IOException ie){
System.out.println("文件读取错误");
System.exit(1);
}
//buf.close();
//f.close();
}catch (FileNotFoundException fnfe){
System.out.println("找不到指定文件");
System.exit(1);
}catch (IOException ie){
ie.printStackTrace();
System.out.println("文件名输入失败");
System.exit(1);
}
}
}
} 只有在注释buf.close()和f.close()时才能实现无限输入,不注释时第二次输入文件名会抛IO异常。
想请教一下,为什么不能关掉buf和f。按道理,就算关掉了,第二次循环时也会生成一个新的输入输出流?
import java.io.*;
import java.util.*;public class Test {
public static void main(String[] args){
while(true)
{
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
try{
String str = buf.readLine();
System.out.println(str);
FileReader f = new FileReader(str);
try{
int b;
while ((b=f.read()) != -1){
System.out.print((char)b);
}
}catch (IOException ie){
System.out.println("文件读取错误");
System.exit(1);
}
//buf.close();
//f.close();
}catch (FileNotFoundException fnfe){
System.out.println("找不到指定文件");
System.exit(1);
}catch (IOException ie){
ie.printStackTrace();
System.out.println("文件名输入失败");
System.exit(1);
}
}
}
} 只有在注释buf.close()和f.close()时才能实现无限输入,不注释时第二次输入文件名会抛IO异常。
想请教一下,为什么不能关掉buf和f。按道理,就算关掉了,第二次循环时也会生成一个新的输入输出流?
解决方案 »
- java.net.SocketException: No buffer space available (maximum connections reached?): connect
- ZipInputStream怎么能转换为FileInputStream呢?
- log4j输出异常到一个文件求教
- 谁有thinking in java 第四版(en) html或chm格式的(本人英语水平有限故需要金山词霸取词)
- 问一个有关static的问题
- 关于string类中intern方法的提问
- 我是新手,分不多,希望大家帮忙:)
- 一个傻比问题
- apache soap配置出现的问题,高分求救
- 如何用java实现其他语言那种双击就可运行,而不必在命令行下键入java....才能运行
- 数据结构的一个小问题
- javase代码有错,谁能调试?
public static void main(String[] args)
{
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
while (true)
{
try
{
String str = buf.readLine();
System.out.println(str);
FileReader f = new FileReader(str);
try
{
int b;
while ((b = f.read()) != -1)
{
System.out.print((char) b);
}
}
catch (IOException e)
{
System.out.println("文件读取错误");
break;
}
finally
{
f.close();
}
}
catch (FileNotFoundException fnfe)
{
System.out.println("找不到指定文件");
break;
}
catch (IOException ie)
{
System.out.println("文件名输入失败");
break;
}
}
}用这个试试。