java的io操作

实现小写字母转为大写字母:

import java.io.*;
import java.math.*;
import java.text.*;
import java.util.*;



public class testClass {

	public static void main(String[] args) throws Exception{
		// TODO Auto-generated method stub1
		//本次将通过内存操作流实现转换,先将数据保存在内存流里面,在从里面取出来每一个数据
		String str = "kingone is a engineer!";
		//将所有要读取的数据设置到内存输入流中,本次李勇向上转型为InputStream类实例化
		InputStream input = new ByteArrayInputStream(str.getBytes());
		//为了能够将所有的内存流数据取出,可以使用ByteArrayOutputStream
		OutputStream output = new ByteArrayOutputStream();
		int temp = 0;
		
		//经过此次循环,所有的数据都将保存在内存输入流对象中
		while((temp = input.read())!= -1) {
			output.write(Character.toUpperCase(temp));
		}
		System.out.println(output);
		input.close();
		output.close();
	}
}

实现文件的合并读取:

import java.io.*;
import java.math.*;
import java.text.*;
import java.util.*;



public class testClass {

	public static void main(String[] args) throws Exception{
		// TODO Auto-generated method stub1
		File fileA = new File("d:" + File.separator + "demo" + File.separator + "king1.txt");
		File fileB = new File("d:" + File.separator + "demo" + File.separator + "king2.txt");
		
		if(!fileA.exists()) {
			String str1 = "kingone 95 is";
			Writer out = new FileWriter(fileA);
			out.write(str1);
			out.close();
		}
		if(!fileB.exists()) {
			String str2 = " a engineer!";
			Writer out = new FileWriter(fileB);
			out.write(str2);
			out.close();
		}
		InputStream inputA = new FileInputStream(fileA);
		InputStream inputB = new FileInputStream(fileB);
		ByteArrayOutputStream output = new ByteArrayOutputStream();
		int temp = 0;
		while((temp = inputA.read()) != -1) {
			output.write(temp); //将数据保存到输出流
		}
		while((temp = inputB.read()) != -1) {
			output.write(temp);
		}
		//现在所有的内容都保存到内存输入流里面,所有的内容变为字节数组取出
		byte data[] = output.toByteArray();
		output.close(); //关闭输出流
		inputA.close();
		inputB.close();
		System.out.println(new String(data));  //字节转换为字符串输出
	}
}

定义打印流工具类:

import java.io.*;
import java.math.*;
import java.text.*;
import java.util.*;

class PrintUtil{
	private OutputStream output;
	
	public PrintUtil(OutputStream output) {
		this.output = output;
	}
	
	public void print(int x) { //输出int类型
		this.print(String.valueOf(x)); //调用文本字符串的输出方法
	}
	public void print(String x) { // 采用OutputStream类中定义的方法,将字符串转变为字节数组后输出
		try {
			this.output.write(x.getBytes());
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	public void print(double x) { //输出double类型的数据类型
		this.print(String.valueOf(x));
	}
	public void println(int x) { //输出数据后换行
		this.println(String.valueOf(x));
	}
	public void println(String x) {
		this.print(x.concat("\n"));
	}
	public void println(double x) {
		this.print(String.valueOf(x));
	}
	public void close() {
		try {
			this.output.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

public class testClass {

	public static void main(String[] args) throws Exception{
		// TODO Auto-generated method stub1
		PrintUtil  pu = new PrintUtil(new FileOutputStream(new File(
				"d:" + File.separator + "test.txt")));
		pu.print("kingone95");
		pu.println(" is a engineer!");
		pu.println(1+1);
		pu.println(1.1+1.1);
		pu.close();
	}
}

使用PrintStream类实现输出:

import java.io.*;
import java.math.*;
import java.text.*;
import java.util.*;

public class testClass {

	public static void main(String[] args) throws Exception{
		// TODO Auto-generated method stub1
		// 实例化PrintStream类对象,本次利用FileOutputStream实例化类PrintStream类
		PrintStream pu = new PrintStream(new FileOutputStream(
				new File("d:" + File.separator + "demo" + File.separator + "king.txt")));
		pu.print("kingone95");
		pu.println(" is an engineer!!");
		pu.println(1+1);
		pu.println(1.1+1.1);
		pu.close();
	}
}

格式化输出:

import java.io.*;
import java.math.*;
import java.text.*;
import java.util.*;

public class testClass {

	public static void main(String[] args) throws Exception{
		// TODO Auto-generated method stub1
		// 实例化PrintStream类对象,本次利用FileOutputStream实例化类PrintStream类
		PrintStream pu = new PrintStream(new FileOutputStream(new File(
				"d:"+File.separator + "demo" + File.separator+ "king.txt")));
		String name = "kingone95";
		int age = 19;
		double score = 99.99988;
		pu.printf("姓名: %s, 年龄: %d , 成绩:%5.2f", name ,age,score );
	}
}

格式化字符串:

import java.io.*;
import java.math.*;
import java.text.*;
import java.util.*;

public class testClass {

	public static void main(String[] args) throws Exception{
		// TODO Auto-generated method stub1
		// 实例化PrintStream类对象,本次利用FileOutputStream实例化类PrintStream类
		String name = "kingone95";
		int age = 23;
		double score = 99.9999888;
		String str = String.format("姓名: %s, 年龄: %d, 分数: %5.2f", name,age,score);
		System.out.println(str);
	}
}

System类对IO的支持

错误输出:

import java.io.*;
import java.math.*;
import java.text.*;
import java.util.*;

public class testClass {

	public static void main(String[] args) throws Exception{
		// TODO Auto-generated method stub1
		// 实例化PrintStream类对象,本次利用FileOutputStream实例化类PrintStream类
		try{
			Integer.parseInt("abc");
		} catch(Exception e) {
			System.err.println(e);
		}
	}
}

利用OutputStream实现屏幕输出:

	
	import java.io.*;
	import java.math.*;
	import java.text.*;
	import java.util.*;
	
	public class testClass {
	
		public static void main(String[] args) throws Exception{
			// TODO Auto-generated method stub1
			
			OutputStream out = System.out;  //OutputStream 实际就位屏幕输出
			out.write("kingone95".getBytes()); //String.getBytes()返回的是字符串的字节数组
		}
	}

消费型函数式接口与方法引用:

	
	import java.io.*;
	import java.math.*;
	import java.text.*;
	import java.util.*;
import java.util.function.Consumer;
	
	public class testClass {
	
		public static void main(String[] args) throws Exception{
			// TODO Auto-generated method stub1
			
			Consumer<String> con = System.out::println; //方法的引用
			con.accept("kingone is a man!");
			
		}
	}

实现键盘的数据输入:

	
	import java.io.*;
	import java.math.*;
	import java.text.*;
	import java.util.*;
import java.util.function.Consumer;
	
	public class testClass {
	
		public static void main(String[] args) throws Exception{
			// TODO Auto-generated method stub1
			
			InputStream input = System.in; //System.in为InputStream的实例
			byte data[] = new byte[1024];
			System.out.println("请输入数据:");
			int len = input.read(data); //读入数据并返回长度
			System.out.println("输入数据为: " + new String(data,0,len));
		}
	}

改进输入操作设计:

	
	import java.io.*;
	import java.math.*;
	import java.text.*;
	import java.util.*;
import java.util.function.Consumer;
	
	public class testClass {
	
		public static void main(String[] args) throws Exception{
			// TODO Auto-generated method stub1
			
			InputStream input = System.in;
			StringBuffer buf = new StringBuffer();
			System.out.println("请输入数据:");
			int temp = 0;   //接收的数据长度
			while((temp = input.read()) != -1) {
					if(temp == '\n') {
						break;    //停止接收
					}
					buf.append((char)temp);  //保存读取数据
			}
			System.out.println("输入数据为:" + buf);
		}
	}

判断输入内容:

	
	import java.io.*;
	import java.math.*;
	import java.text.*;
	import java.util.*;
import java.util.function.Consumer;
	
	public class testClass {
	
		public static void main(String[] args) throws Exception{
			// TODO Auto-generated method stub1
			BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
			boolean flag = true;
			while(flag) {
				System.out.print("请输入年龄:");
				String str = buf.readLine(); //读一行文本,以换行结束
				if(str.matches("\\d{1,3}")) {
					System.out.println("年龄是: " + Integer.parseInt(str));//parseInt()解析一个字符串返回一个整数
					flag = false;
				} else {
					System.out.println("输入有误,应该有年龄组成!!");
				}
			}
		}
	}

读取文件:

	
	import java.io.*;
	import java.math.*;
	import java.text.*;
	import java.util.*;
import java.util.function.Consumer;
	
	public class testClass {
	
		public static void main(String[] args) throws Exception{
			// TODO Auto-generated method stub1
			File file = new File("d:" + File.separator + "demo" + File.separator+ "king.txt");
			//使用文件输入流实例化BufferedReader类对象
			BufferedReader buf = new BufferedReader(new FileReader(file));
			String str =null;
			while((str = buf.readLine()) != null) { //读取数据并判断是否存在
				System.out.println(str);
			}
			buf.close();
		}
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值