import java.io.*;
public class IOStreamDemo {
public void samples() throws IOException {
//1. 这是从键盘读入一行数据,返回的是一个字符串
BufferedReader stdin =new BufferedReader(new InputStreamReader(System.in));
System.out.print("Enter a line:");
System.out.println(stdin.readLine());
//2. 这是从文件中逐行读入数据
BufferedReader in = new BufferedReader(new FileReader("IOStreamDemo.java"));
String s, s2 = new String();
while((s = in.readLine())!= null)
s2 += s + "\n";
in.close();
//3. 这是从一个字符串中逐个读入字节
StringReader in1 = new StringReader(s2);
int c;
while((c = in1.read()) != -1)
System.out.print((char)c);
//4. 这是将一个字符串写入文件
try {
BufferedReader in2 = new BufferedReader(new StringReader(s2));
PrintWriter out1 = new PrintWriter(new BufferedWriter(new FileWriter("IODemo.out")));
int lineCount = 1;
while((s = in2.readLine()) != null )
out1.println(lineCount++ + ": " + s);
out1.close();
} catch(EOFException e) {
System.err.println("End of stream");
}
}
}
对于上面的例子,需要说明的有以下几点:
1. BufferedReader是Reader的一个子类,它具有缓冲的作用,避免了频繁的从物理设备中读取信息。它有以下两个构造函数:
BufferedReader(Reader in)
BufferedReader(Reader in, int sz)
这里的sz是指定缓冲区的大小。
它的基本方法:
void close() //关闭流
void mark(int readAheadLimit) //标记当前位置
boolean markSupported() //是否支持标记
int read() //继承自Reader的基本方法
int read(char[] cbuf, int off, int len) //继承自Reader的基本方法
String readLine() //读取一行内容并以字符串形式返回
boolean ready() //判断流是否已经做好读入的准备
void reset() //重设到最近的一个标记
long skip(long n) //跳过指定个数的字符读取
2. InputStreamReader是InputStream和Reader之间的桥梁,由于System.in是字节流,需要用它来包装之后变为字符流供给 BufferedReader使用。
3. PrintWriter out1 = new PrintWriter(new BufferedWriter(new FileWriter("IODemo.out")));
这
句话体现了Java输入输出系统的一个特点,为了达到某个目的,需要包装好几层。首先,输出目的地是文件IODemo.out,所以最内层包装的是
FileWriter,建立一个输出文件流,接下来,我们希望这个流是缓冲的,所以用BufferedWriter来包装它以达到目的,最后,我们需要格
式化输出结果,于是将PrintWriter包在最外层。
分享到:
相关推荐
这篇博客将深入探讨Java中的标准输入流System.in,以及如何使用它进行数据的读取。 `System.in` 是一个`InputStream`类型的对象,它代表了程序的默认标准输入,通常是从键盘获取用户输入。当我们在控制台运行Java...
首先,Java中的System.in是一个InputStream对象,它代表程序的标准输入流,通常是键盘输入。当调用System.in.read()或相关方法时,程序会阻塞,等待用户输入数据。然而,在服务器环境或者非交互式应用中,如调用...
当程序期待从标准输入流接收到一个`int`类型的数值,但用户实际上输入了一个非整数的字符串,如字母或特殊字符,这时就会抛出这个异常。 为了深入理解这个问题,我们首先需要了解Java中的数据类型。在Java中,整数...
- **基本介绍**:`InputStream`是一个抽象类,它定义了所有输入流必须支持的一些基本方法,如`read()`等。 - **read()方法**: - `public int read() throws IOException`:从流中读取一个字节。如果已经到达流的...
在Java编程语言中,`System.in.read()`是一个用于从标准输入流(stdin)读取单个字节数据的方法。这个方法广泛应用于命令行程序,允许用户通过键盘输入数据与程序进行交互。在这个“java代码-System.in.read()测试”...
System.in 是标准输入流,用于从键盘输入数据;System.err 是标准错误设备,用于输出系统错误信息。 System.out 是 PrintStream 类对象,输出字节数据流;System.in 是 InputStream 类对象,输入字节数据流;System...
`System.in`是Java标准输入流的一个实例,通常用于读取键盘输入。但是,`System.in.read()`方法每次只能读取一个字节的数据,这对于读取字符串或更复杂的数据结构来说效率较低且不够直观。因此,虽然这种方法可以...
2. **设置System.in**:然后通过`System.setIn(in)`方法将系统默认的输入流替换为自定义的输入流。 ```java System.setIn(in); ``` 3. **读取数据**:接下来可以使用`Scanner`类从修改后的`System.in`读取数据...
- **`System.in`**: 是标准输入流,通常用于从控制台读取数据。在Java中,可以使用`InputStream`类或`Scanner`类来读取`System.in`的数据。 - **`System.out`**: 是标准输出流,用于向控制台输出数据。可以通过调用`...
System.in 表示Java标准输入流,此流对应于键盘输入或者由主机环境或用户指定的另一个输入源。 Scanner in =new Scanner(System.in); 从控制台获取输入 创建输入流对象in 必须先导入Scanner类 import java.util....
字节输入流 `System.in` 是 `InputStream` 的常量对象,可以使用 `read()` 方法从键盘接收数据。实现步骤是:先把数据读入字节数组中,然后利用字节数组定义字符串,最后把字符串转化为需要的数据类型。例如: ```...
在Java编程语言中,接收键盘输入流是一项基本但至关重要的任务,它允许程序与用户进行交互。在给定的代码示例中,我们看到如何使用`java.io`包中的类来实现这一功能。以下是详细的知识点解释: 1. **...
数据流是指数据传输的路径,Java中的I/O流分为字节流和字符流两大类,每类又分为输入流和输出流。字节流处理的是8位的字节,而字符流处理的是16位的Unicode字符。流的层次结构包括了InputStream、OutputStream、...
System.in 是一个 InputStream 类的实例,可以使用 read() 和 skip(long n) 两个成员函数来读取输入。System.out 和 System.err 是 PrintStream 类的实例,可以使用 print() 和 println() 两个成员函数来输出信息。 ...
System.in 是 Java 中的一个标准输入流对象,它可以用来读取从命令控制台输入的数据。使用 System.in.read() 方法可以读取一个字节的数据,但这对于读取字符串或一组数字来说是不够的。为了读取更多的数据,可以使用...
Java提供了多种输入方式,包括标准输入流`System.in`、`Scanner`类以及命令行参数等。本文将详细介绍这些输入方式,并通过实例演示如何使用它们。 #### 二、标准输入流`System.in` `System.in`是Java中的标准输入...