package IOStreamTest;import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;public class InputStreamReaderTest {
public static void main(String[] args) {
try{
int rs;
File file = new File("F:\\","file2.txt");
if(!file.exists()){
file.createNewFile();
}
FileInputStream fis = new FileInputStream(file);
InputStreamReader isr = new InputStreamReader(fis);
System.out.println("The content of file2.txt is:");
while ((rs = isr.read())!=-1){
System.out.print((char)rs);
}
isr.close();
}catch (IOException e){
e.printStackTrace();
}
}
}
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;public class InputStreamReaderTest {
public static void main(String[] args) {
try{
int rs;
File file = new File("F:\\","file2.txt");
if(!file.exists()){
file.createNewFile();
}
FileInputStream fis = new FileInputStream(file);
InputStreamReader isr = new InputStreamReader(fis);
System.out.println("The content of file2.txt is:");
while ((rs = isr.read())!=-1){
System.out.print((char)rs);
}
isr.close();
}catch (IOException e){
e.printStackTrace();
}
}
}
= new BufferedReader(new InputStreamReader(System.in));read
public abstract int read()
throws IOException从输入流中读取数据的下一个字节。返回 0 到 255 范围内的 int 字节值。如果因为已经到达流末尾而没有可用的字节,则返回值 -1。在输入数据可用、检测到流末尾或者抛出异常前,此方法一直阻塞。
子类必须提供此方法的一个实现。
返回:
下一个数据字节;如果到达流的末尾,则返回 -1。
抛出:
IOException - 如果发生 I/O 错误。
System.out.println(s);
}rs是不是可以理解成当前成功读取的字节的数目?若已读到流结尾,返回值-1?我是新手,还望高手给我指条明路,谢谢了!
那我这样写为什么运行结果一样的呢?
int rs;
byte bytes[] = new byte[512];
File file = new File("F:\\","file2.txt");
if(!file.exists()){
file.createNewFile();
}
FileInputStream fis = new FileInputStream(file);
// InputStreamReader isr = new InputStreamReader(fis);
System.out.println("The content of file2.txt is:");
while ((rs = fis.read(bytes,0,512))!=-1){
// System.out.print((char)rs);
String str = new String(bytes,0,rs);
System.out.println(str);
}
fis.close();
File file = new File("F:\\","file2.txt");
if(!file.exists()){
file.createNewFile();
}
FileInputStream fis = new FileInputStream(file);
InputStreamReader isr = new InputStreamReader(fis);
System.out.println("The content of file2.txt is:");
while ((rs = isr.read())!=-1){
System.out.println((char)rs);
}
isr.close();
我试了下上面这个代码,发现这个输出是这样进行的:执行while条件语句,读取一个字符,判断条件为真,输出这个字符,接着再返回while条件语句,继续读取下一个字符,再判断条件为真,再输出.....直到判断条件为假才返回-1。我刚查了下,这个isr.read()是表示读入一个字符,但是不知道这个返回的rs到底是什么?是当前读取的这个字符吗?