如果我们在控制台创建大量输出(如在调试程序时),而这些输出滚动的太快以致无法阅读时,重定向输出就显得很有意义。例如重定向输出到文件,我们便可以很方便的查阅文件。
下面是一个简单的例子,来自《Think in java》,介绍了一些方法的使用,这里添加了一些代码及简要的注释加以说明。
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
public class Redirecting {
public static void main(String[] args) throws IOException {
/*
*输入、输出、错误的重定向,定向到文件
*/
PrintStream console = System.out;
BufferedInputStream in = new BufferedInputStream(
new FileInputStream("E:/worksp/reflect/src/Redirecting.java"));
PrintStream out = new PrintStream(
new BufferedOutputStream(
new FileOutputStream("E:/worksp/reflect/src/test.txt")));
// PrintStream out = new PrintStream(
// new BufferedOutputStream(
// new FileOutputStream("E:/fuel.txt",true)),true);
// 第一个true表示追加,第二个表示缓存自动刷新
System.setIn(in); //输入定向到文件Redirecting.java
System.setOut(out); //输出定向到文件test.txt
System.setErr(out); //错误定向到文件test.txt
BufferedReader br = new BufferedReader(
new InputStreamReader(System.in)); //InputStreamReader 字节流转换到字符流类
String s;
while((s = br.readLine()) != null){
System.out.println(s);
}
out.close(); //必须调用的方法
System.setOut(console); //重新定向到控制台
System.out.println("console!");
}
}
注:I/O重定向操纵的是字节流,不是字符流。
分享到:
相关推荐
本项目旨在开发一个用于 Linux 的 Shell 程序,利用 C++ 标准库和 Linux 系统调用来实现。该 Shell 程序提供了基本的命令执行功能,支持 I/O 重定向和管道操作,并实现了一些内置命令
I/O重定向是一种在Linux中改变默认输入输出流的方式,它允许程序的标准输入、输出和错误流被重定向到文件、设备或另一个进程。在本文中,通过I/O重定向的文件共享技术,将原本用于控制台的RS232串行口转换为普通串行...
- **处理顺序**:在I/O重定向中,标准输出和标准错误输出的管道会优先准备,然后再从标准输入读取数据。 - **管道** (`|`):允许上一个命令的标准输出作为下一个命令的标准输入。 - **tee命令**:可以在不影响原本I/...
最后,书中还探讨了诸如进程环境、进程组和会话、终端管理、标准I/O重定向等高级话题,这些内容对于编写脚本和管理系统服务非常实用。 总之,《UNIX环境高级编程》是一部全面且深入的教程,不仅适合初学者建立坚实...
#### 二、标准I/O重定向 Java还支持标准I/O的重定向,即可以改变标准输入输出流的目标或来源。这对于调试和自动化测试非常重要。 **2.1 标准I/O重定向方法** - **setIn(InputStream)**: 用于设置标准输入流。 - *...
这就需要用到I/O重定向,即将标准输入(stdin)、标准输出(stdout)和标准错误(stderr)的流向改变,使其不局限于屏幕或键盘。 **I/O重定向** 1. **标准输入(stdin)**:默认情况下,命令行从键盘接收输入。...
在Linux系统中,I/O重定向和管道是两种重要的进程间通信(IPC)方式,它们允许我们改变程序的标准输入、输出和错误流,或者在不同的进程中传递数据。本实验主要涵盖了这两个主题,通过编写和运行C语言程序来实践。 ...
了解标准I/O库、RIO库特点及使用场合 掌握系统I/O库的使用:read/write/open/lseek/close,能分析程序案例 内核文件I/O数据结构,文件打开过程、文件关闭过程 dup和I/O重定向原理(案例分析) 文件逻辑地址、...
同时,VxWorks 还支持 I/O 重定向的功能,用户可以使用 ioGlobalStdSet 函数将系统保留的描述符 stdFd(0,1,2)重定向到 newFd 上,从而将标准输入/输出/错误输出重新定向到任何一个 I/O 设备上。 VxWorks Device ...
5. 对于I/O重定向,使用`open()`打开文件,`dup2()`重定向标准输入/输出。 6. 调用`execlp()`执行命令,传入命令和参数。 7. 如果有多个命令,重复步骤3-6直到处理完所有命令。 8. 继续循环,等待下一次用户输入。 ...
I/O重定向是一种强大的机制,用于改变程序的标准输入输出设备的目标,使得程序可以从文件或其他来源读取数据,或者将输出写入文件而不是终端。这为自动化脚本编写提供了极大的便利。 ##### 2.1 标准输出和错误重新...
实验成功实现了包括基本命令执行、内置命令(如`cd`和`exit`)、I/O重定向和管道等功能的简易Shell。代码进行了简化处理,实际编写时还需要考虑程序的健壮性,例如错误处理和异常情况的管理。 通过这次实验,参与者...
C 标准 I/O 库函数是一组库函数,提供了基本的输入/输出操作,包括文件输入/输出、输入/输出重定向、文件描述符等。这些函数都是基于系统调用的,例如 `fopen` 函数调用 `open` 系统调用来打开文件,`fread` 函数...
在这个主题中,我们将深入探讨Perl中的输入/输出(I/O)基础知识,这对于任何Perl程序员来说都是必不可少的知识。 **一、Perl中的I/O流** 在Perl中,输入/输出操作是通过文件句柄完成的,它是一个特殊的变量,用于...
6. `CRT`库函数:`_read`、`_write`以及`printf`等函数都是C运行时(CRT)库的一部分,它们负责与标准I/O流进行交互。在重定向操作中,CRT提供的I/O函数仍然可用,因为它们通过底层的文件描述符与操作系统通信。 7....
匿名管道是单机上实现子进程标准 I/O 重定向的有效方法,不能在网上使用,也不能用于两个不相关的进程之间。 命名管道是服务器进程和一个或多个客户进程之间通信的单向或双向管道。不同于匿名管道的是命名管道可以...
3. I/O 重定向:I/O 重定向是将标准输入、输出、错误流重定向到文件或其他设备, Shell 提供了多种 I/O 重定向的方式,如 > >> 等。 4. Shell 变量:Shell 变量是 Shell 中的一种数据存储方式,变量可以是用户定义...
总结,I/O 重定向是 Linux shell 中的重要特性,它提供了灵活的数据流控制,允许用户和程序以非交互方式处理输入和输出。通过管道、重定向操作符以及 tee 命令,我们可以构建复杂的命令链,实现数据处理和自动化任务...
1. 标准I/O重定向:在MCS51上,没有标准的串行端口或显示器,因此需要模拟stdio库,将printf输出重定向到串口或其他可用的硬件接口。 2. 字符缓冲区:为提高效率,通常会引入一个字符缓冲区,积累待发送的数据,然后...