Java基础(17):常用类—System类的标准流重定向与常用方法

System类的作用

  • System 类提供标准输入、标准输出和错误输出流
  • 对外部定义的属性和环境变量的访问
  • 加载文件和库的方法
  • 还有快速复制数组的一部分的实用方法。

了解System.in 、 System.out 、System.err

它们都属于System类的静态变量。
  • System.in   标准输入流(从键盘输入)
  • System.out  标准输出流 (输出到控制台)
  • System.err  标准错误输出流(输出的字体颜色是红色)

代码演示System.in:
		//把标准输入作为扫描的数据源
		Scanner sc = new Scanner(System.in);
		//将标准输入作为数据源
		BufferedReader bis = new BufferedReader(
				          new InputStreamReader(System.in));

代码演示System.out:
System.out是一个PrintStream(打印流),所以System.out.println()就是调用打印流中的println()方法。
		//简单使用System.out
		System.out.print("ABC");//不换行
		System.out.println("DEF");//换行
		//对System.out进行包装处理
		Writer bw = new BufferedWriter(new OutputStreamWriter(System.out));
		bw.write("完成控制台输出");
		bw.append("OKOKOKOKOK"); //等效于print()
		bw.flush();//刷出缓冲区
上面代码中将System.out进行包装后,也能达到打印流中的效果,但功能一般,所以这里了解就好。

代码演示System.err:
System.
public class Test {
	public static void main(String[] args) throws IOException {
		System.err.println("使用System.err");
		BufferedWriter bwt = new BufferedWriter(new OutputStreamWriter(System.err));
		bwt.write("和System.out有啥不同");
		bwt.flush();
	}
}
System.err输出的字体颜色是红色,最常见到的就是打印异常信息时,都是红色,就是使用该流来打印的。

System对标准流进行重定向:

原来的标准流默认是键盘输入和输出到控制台,重定向则是分配标准流,表示可以使用别的流作为标准。
方法如下:
  • static voidsetIn(InputStream in)
  • static void  setOut(PrintStream ps)
  • static  void  setErr(PrintStream ps)
代码演示setIn的作用:
        //未对System.in进行重定向
	public static void unSetIn() {
		Scanner sc = new Scanner(System.in);		
		//判断是否有下一个输入项
		while(sc.hasNext()) {
			String s = sc.next();
			if(s.equalsIgnoreCase("end")) break; //结束判断
			System.out.println(s);	
		}
	}
	//使用重定向之后
	public static void setInTest() throws FileNotFoundException {
		//创建一个输入流
		FileInputStream fis = new FileInputStream("D:\\MoreObject.txt");
		//将该流重定向为标准输入
		System.setIn(fis); 
		Scanner sc2 = new Scanner(System.in);
		String s = null;
		while(sc2.hasNext()) {
			//控制台输出的内容是fis对象中的文件内容
			System.out.println(sc2.next());
		}					
	}
重定向System.in之前,以键盘作为标准输入,从控制台输入数据就在控制台打印数据。
重定向后,指向一个输入流,该流作为标准输入,所以控制台输出的是重定向的流指向的文件内容。
代码演示setOut的作用:
因为setErr和setOut使用方式一样,所以省略setErr。
public class Test2 {
	public static void main(String[] args) throws FileNotFoundException {
		System.out.println("打印在控制台~~");
		//true:不会覆盖目标文件内容
		FileOutputStream fos = new FileOutputStream("F:\\setOutTest.txt",true);
		PrintStream ps = new PrintStream(fos);
		System.setOut(ps);
		
		//使用System.out
//		System.out.println("输出到哪里了1");
//		System.out.println("输出到哪里了2");
//		System.out.println("输出到哪里了3");
		//该方法会覆盖内容,所以需要fos对象设置允许追加内容
//		System.out.append("");
	}
}
未重定向之前,输出内容到控制台。重定向后,输出内容到指定文件中。
需要注意,执行输出操作默认对目标文件内容进行覆盖,所以节点流连接数据源时,可以根据需求设置是否允许附加内容。

Systeml类的常用方法:

static long currentTimeMillis()  返回以毫秒为单位的当前时间。 
static void exit(int status) 终止当前正在运行的 Java 虚拟机。
static Properties getProperties() 获取当前系统的所有属性。
static String getProperty(String key) 获取指定键指示的系统属性。  
static int identityHashCode(Object x) 返回给定对象的原始哈希码Hashcode()
static void load(String filename)  从动态库的本地文件中以指定的文件名加载代码文件。 
static void loadLibrary(String libname)  加载由 libname 参数指定的系统库。 
static void setProperties(Properties props)  将系统属性设置为 Properties 参数。 
static String setProperty(String key, String value)  设置指定键指示的系统属性。 
static void setSecurityManager(SecurityManager s)  设置系统安全性。 
static long nanoTime()   返回最准确的可用系统计时器的当前值,以毫微秒为单位
static String getenv(String name)  获取指定的环境变量值。
static void gc()  运行垃圾回收器。






































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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值