Java基础复习:IO流(续)

内存流:

    内存输入流:内存--->程序   ByteArrayInputputStream、CharArrayReader

    内存输出流:程序--->内存   ByteArrayOutputStream、CharArrayWriter

    内存流可以不用关闭,其读取操作同前面的文件流

 

打印流:

    PrintStream   PrintWriter

import java.io.FileNotFoundException;
import java.io.PrintStream;

public class PrintDemo {
	public static void main(String[] args) throws FileNotFoundException {
		PrintStream ps = new PrintStream("d:/Test/well.txt");
		ps.write('a');
		ps.print(true);
		ps.print("hello,world");
	}
}

利用print() 可以输出任何类型的数据到文件中。

 

格式化输出:printf   ,同C语言

public class PrintfDemo {
	public static void main(String[] args) {
		String name = "well";
		int age = 21;
		char score = 'A';
		
		System.out.printf("%s,%d,%c",name,age,score);//well,21,A
	}
}


 

管道流:

又称线程通讯流,主要用于两个线程间的通信。

   PipedOutputStream

   PipedInputStream

 

标准输入输出:

     System.in和System.out,默认情况下分别表示键盘和屏幕

     可以对其进行重定向,分别利用setIn 和 setOut

package io;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.PrintStream;

public class SystemDemo {
	public static void main(String[] args) throws IOException {
		
		/**
		 * 标准流:
		 * 		标准输入流:  System.in   默认表示的是键盘录入
		 * 		标准输出流:  System.out  默认表示的是屏幕输出
		 * 
		 * 
		 * 		若现在我输出不想打印在屏幕上,怎么办?
		 * 		若现在我不想通过键盘来录入数据,有怎么办?
		 * 
		 * 
		 * 		流的重定向:
		 * 		static void setOut(PrintStream out)     重新分配“标准”输出流。 
		 * 		static void setIn(InputStream in)  重新分配“标准”输入流。 
		 */
		
		System.out.println("12123");
		
		
		
		System.out.println("----end-----");
		
		System.err.println("12123");
		
		//把屏幕输出重定向到setOut.txt,以后的打印就不会打印在屏幕上了,而是打印在setOut.txt文件里面
		System.setOut(new PrintStream("setOut.txt"));
		
		System.out.println("AAAA");
		System.out.println("BBBB");
		
		//===================================
		int  i = System.in.read();//接受从键盘输入的数据
		System.out.println("键盘录入数据是=  "+(char)i);
		System.out.println("---------------------------");
		
		/**
		 * 重新分配 输入的源,原本是键盘,现在改成 day21复习.txt文件
		 */
		System.setIn(new FileInputStream("day21复习.txt"));
		
		byte[] buff = new byte[1024];
		int len = 0;
		while((len = System.in.read(buff)) != -1){
			System.out.println(new String(buff,0,len));
		}
	}
}


扫描流:

import java.io.File;
import java.io.IOException;
import java.io.PrintStream;
import java.util.Scanner;

public class ScannerDemo {
	public static void main(String[] args) throws IOException {
		
		/**
		 * 文本扫描器
		 */
		Scanner sc = new Scanner(System.in);//扫描键盘录入的数据
		/**
		 * Scanner useDelimiter(String pattern)    将此扫描器的分隔模式设置为从指定 String 构造的模式。 
		 */
		
		//sc.useDelimiter("\\d");
		
		/**
		 * Scanner(File source)  构造一个新的 Scanner,它生成的值是从指定文件扫描的。
		 */
		
		System.setOut(new PrintStream("line.txt"));
		sc = new Scanner(new File("day21复习.txt"));
		int line = 1;
		while(sc.hasNextLine()){//是否有下一行
			System.out.println(line +" " + sc.nextLine());//读取下一行
			line++;
		}
		
	}


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值