java重定向输出流到文件(从文件到输入流)
如何重定向呢?先看看以下代码
public class Run{
int age;
String name;
String sex;
public void go(){
age = 0;
name = "未知";
sex = "未知";
//以下是标准输入
Scanner scanner = new Scanner(System.in);
System.out.println("请输入您的姓名");
name = scanner.nextLine();
System.out.println("请输入您的性别");
sex = scanner.nextLine();
System.out.println("请输入您的年龄");
age = scanner.nextInt();
//重定向输出
try {
PrintStream out = System.out; //保存原输出流
PrintStream ps = new PrintStream("./log.txt");//新建新输出流
System.setOut(ps);//切换输出流
String info = "这是一名" + sex + "孩子,应该有" + age + "岁了";
System.out.println(info);//此处将会写入本地文件里
System.setOut(out); //切换回原输出流
System.out.println("程序运行完毕,请查看日志文件,此次输入内容为:" + info);
}catch(FileNotFoundException e){
e.printStackTrace();
}
}
}
此代码实现了重新分配输出流,也可用同样方式设置Err()输出流。
除此之外还有setIn()方法,可使用InputStream对象操作。代码如下:
public void read(){
reading ="read wrong";
File file = new File("./log.txt");
try {
InputStream in = System.in;//保存原输入流
InputStream ips = new FileInputStream(file);//创建新输入流
/**
* 初始化完毕后,进行操作
*/
System.setIn(ips);//切换输入流
Scanner tow = new Scanner(ips);//读取输入流
reading = tow.nextLine();
System.out.println(reading);
/**
* 以下为操作完毕后,必须操作的步骤
*/
System.setIn(in);//切换回原输入流
ips.close();//切记 必须关闭不必要的输入流
}catch (FileNotFoundException e ){
e.printStackTrace();
}catch (IOException e){
//忽略
}
}