流:字节序列(顺序)
(输入流和输出流都是抽象类,不能被实例化;输入和输出是相对于程序来说的;)
输入流InputStream:(键盘、文件、网络 )
System.in.read();可以按照读取控制台输入的数据
等价于
Scanner s=new Scanner(System.in);
/**举例如下
int s=System.in.read();
//char类型不能表示读取的文件的结束, int表示为-1 时,表明文件读取结束
System.out.println(s);
**/
IO操作时会有字节序列产生
字节序列→(编码方式)→串
编码方式:gbk (囧、镕)、 gb2312、big5 (台湾)、 Unicode(标准)—UTF-8
/**举例如下
//将字符串转换成字节序列,再将字节序列转换成字符串
String s="中国 adbkjd";
Byte[] b=s.getBytes(); //Byte[] b=s.getBytes("GBK");
String s1=new String(b); //String s1=new String(b,"GBK");
//不给出的话就按默认的编码方式;给的话这两个地方的编码方式要保持一致
System.out.println();
//输出结果:中国 adbkjd
**/
System.in 提供字节输入;
InputStreamReader 提供了字符的输入;
BufferedReader 提供了整行字符(串)的输入;
/**举例如下
//标准的从键盘读入一行信息
BufferedReader bs=new BufferEdReader(new InputStreamReader(System.in));
String s=bs.readLine(); //一行一行读取数据
System.out.println(s);
**/
java中的预定义流:
System.in 标准输入流 默认键盘
System.out 标准输出流 默认键盘
System.err 标准错误流 默认屏幕
这些预定义的流是可以重定向的:
System.setIn(…)
System.setOut(…)
System.setErr(…)
泛化:
InputStream ins=new FileInputStream(“a.txt”);
读的异常情况
1、异常
FileNotFoundException 文件找不到
IOException 其他异常
2、读到文件尾
readLine() 返回null
从文件读入信息打印到控制台
/**举例如下
BufferedReader bs=
new BufferedReader(
new InputStreamReader(
new FileInputStreamReader("d:/test.txt")));
for(;;){
String s =br.readLine(); //一行一行的读数据
if(s==null)
break;
System.out.println(s);
}
**/
----------------------------------------------------------
输出流OutputStream:(屏幕、文件、网络)
将一些字符串输出的文件中
/**举例如下
String s1="文件流文件流";
String s2="我是谁我是谁";
BufferedWriter bw=
new BufferedWriter(
new OutputStreamWriter(
new FileOutputStream("d:/test02.txt")));
bw.write(s1); //换行:改为bw.write(s1+"\n");或者再加一句bw.newLine();
bw.write(s2);//将内容写入内存
bw.flush();//清除内存中的内容,将其写到磁盘上对应的文件中
**/
从键盘接受信息输出到文件
/**举例如下
//从键盘读入
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
//构建输出流
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream("d:/test.txt")));
//写信息
for(;;){
String s=br.readLine();
if(s == null )
break;
bw.write(s);
}
bw.flush();
**/
为输出的信息加行号
/**举例如下
//从键盘读入
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
//构建输出流
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream("d:/test.txt")));
//写信息
int i=0;
for(;;){
String s=br.readLine();
if(s == null )
break;
bw.write(i + "、" + s);
bw.newLine();
i++;
}
bw.flush();
**/