Java文件流

标准输入流

使用StdIn库从标准输入流中获取数据,isEmpty()判断输入是否已经结束(由Ctrl-d或者Ctrl-z结束),在默认状态下系统把输出定向到终端窗口,输入的内容就是输入流。

public static void main(String[] args) {
	int sum = 0;
	int count = 0;
    while(!StdIn.isEmpty()){
    	sum = sum + StdIn.readInt();
    	count++;
    }
    double ave = (double)sum/count;
    StdOut.println(ave);
}

输出结果:

// Run
20 30 20 50 60 1
^D
30.166666666666668

Process finished with exit code 0
// 命令行运行
D:\Workspace\Java\First\src>java com\FirstJ\Test.java
10 20 30 40 20 30
^Z
25.0

D:\Workspace\Java\First\src>

重定向和管道

1.标准输出重定向
    public static int[] RandomInt(int n, int a, int b) {
        int[] arr = new int[n];
        for(int i = 0; i < n; i++) {
            arr[i] = StdRandom.uniform(a, b);//生成[a,b)的随机整数
        }
        return arr;//返回生成的随机数组
    }
    public static void main(String[] args) {
        int n = StdIn.readInt();	//输入随机数组长度
        int a = StdIn.readInt();	//随机数组左边界[a,b)
        int b = StdIn.readInt();	//随机数组右边界[a,b)
        int[] arr = RandomInt(n, a, b);
        for (int i = 0; i < arr.length; i++) {
            StdOut.println(arr[i]);
        }

输出结果:

10 -10 10
4
-9
3
2
1
5
-6
3
7
-1

Process finished with exit code 0

在命令行状态下可以对输出进行重定向:

D:\Workspace\Java\First\src>java com\FirstJ\Write.java > data.txt
1000 -200 200

D:\Workspace\Java\First\src>

生成data.txt文件:
在这里插入图片描述
% java com\FirstJ\Write.java > data.txt
这条命令指明的标准输出流不是打印至终端窗口,而是被写入一个data.txt的文件中,每一个StdOut.print()或者StdOut.println()都会向文件中追加一段数据,上述程序会得到一个含有1000个范围在[-200, 200)之间的随机整数的txt文件,而终端的不会出现任何输出;

2.标准输入重定向
public static void main(String[] args) {
	int sum = 0, count = 0;
	int[] arr = In.readInts();
	for (int i = 0; i < arr.length; i++) {
		sum = sum + arr[i];
		count++;
		StdOut.println(arr[i]);
	}
//	  StdIn.readInt()方法实现
//    while(!StdIn.isEmpty()){
//        int temp = StdIn.readInt();
//        sum = sum + temp;
//        count++;
//        StdOut.println (temp);
//    }        
	double re = (double)(sum) / count;
	StdOut.println ("平均值为:" + re);
}

输出结果:

D:\Workspace\Java\First\src>java com\FirstJ\Read.java < data_read.txt
注: com\FirstJ\Read.java使用或覆盖了已过时的 API。
注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。
6
-9
2
3
6
-3
-5
-8
6
-3
平均值为:-0.5

D:\Workspace\Java\First\src>

% java com\FirstJ\Read.java < data_read.txt
这条命令指明了程序的输入由data.txt文件中读取一系列的数值,而不是等待用户的输入;

3.管道

% java com\FirstJ\Write.java | java com\FirstJ\Read.java
把write.java的标准输出和Read.java标准输入指向同一个流,可以突破处理的输入输出流的长度限制。

代码见上

输出结果:

D:\Workspace\Java\First\src>java com\FirstJ\Write.java | java com\FirstJ\Read.java
10 -10 10
-9
-8
5
-3
-7
8
2
-1
3
3
-0.7

D:\Workspace\Java\First\src>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值