io加强

io我们只要熟记一下四步就ok了

下面我们通过两个题目来熟悉io操作的四步:

package cn.hncu.app;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintStream;

public class IoTest {
	
	public static void main(String[] args) {
		test1();
		test2();
		test3();
		test4();
		test5();
	}
	/**
	 * 读取一个文本文件,将文本按照指定的编码表UTF-8写入到另一个文件中
	 */
	public static void test5() {
		try {
			FileReader fr = new FileReader("test\\test5In.txt");
			FileOutputStream fout =new FileOutputStream("test\\test5Out.txt");
			
			
			OutputStreamWriter osw = new OutputStreamWriter(fout,"utf-8");
			BufferedReader br = new BufferedReader(fr);
			BufferedWriter bw = new BufferedWriter(osw);
			
			String str = null;
			while((str=br.readLine())!=null){
				bw.write(str);
				bw.newLine();
			}
			br.close();
			bw.close();
			
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}

	/**
	 * 读取一个文本文件,显示到显示器上
	 */
	public static void test4() {
		try {
			FileReader fr = new FileReader("test\\test4In.txt");
			PrintStream fs = System.out;
			OutputStreamWriter osw = new OutputStreamWriter(fs);
			BufferedReader br = new BufferedReader(fr);
			BufferedWriter bw = new BufferedWriter(osw);
			
			String str = null;
			while((str=br.readLine())!=null){
				bw.write(str);
				bw.newLine();
			}
			br.close();
			bw.close();
			
			
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	/**
	 * 读取键盘录入,存储到一个文件中
	 */
	public static void test3() {
		try {
			InputStream fr = System.in;
			FileWriter fw = new FileWriter("test\\test3Out.txt");
			
			InputStreamReader isr = new InputStreamReader(fr);
			BufferedReader br = new BufferedReader(isr);
			BufferedWriter bw = new BufferedWriter(fw);
			String str = null;
			while((str=br.readLine())!=null){
				if("over".equals(str)){
					break;
				}
				bw.write(str);
				bw.newLine();
			}
			br.close();
			bw.close();
			
			
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		
	}
	/**
	 * 复制一个图片文件
	 */
	public static void test2() {
		try {
			FileInputStream fin = new FileInputStream("test\\GuiQi.jpg");
			FileOutputStream fout = new FileOutputStream("test\\DemoCrice.jpg");
			
			BufferedInputStream bis = new BufferedInputStream(fin);
			BufferedOutputStream bos = new BufferedOutputStream(fout);
			byte[] buf = new byte[10];
			int len = 0;
			while((len= bis.read(buf))!=-1){
				bos.write(buf, 0, len);
			}
			bos.close();
			bis.close();
			
			
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	/**
	 * 复制一个文本文件
	 */
	public static void test1() {
		try {
			FileReader fr = new FileReader("test\\test1In.txt");
			FileWriter fw = new FileWriter("test\\test1Out.txt");
			
			BufferedReader br = new BufferedReader(fr);
			BufferedWriter bw = new BufferedWriter(fw);
			
			String str = null;
			while((str=br.readLine())!=null){
				bw.write(str);
				bw.newLine();
			}
			br.close();
			bw.close();
			
			
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}

}

package cn.hncu.app;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.SequenceInputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;


public class Train1 {
	public static void main(String[] args) {
//		qieGe();
		heBing();
		
	}
	/**
	 * 合并文件
	 */
	private static void heBing() {
		//输入
		try {
			FileInputStream fin1 =new FileInputStream("test\\train1Out.txt");
			FileInputStream fin2 =new FileInputStream("test\\train2Out.txt");
			FileInputStream fin3 =new FileInputStream("test\\train3Out.txt");
			FileInputStream fin4 =new FileInputStream("test\\train4Out.txt");
			FileInputStream fin5 =new FileInputStream("test\\train5Out.txt");
			FileInputStream fin6 =new FileInputStream("test\\train6Out.txt");
			FileInputStream fin7 =new FileInputStream("test\\train7Out.txt");
			FileInputStream fin8 =new FileInputStream("test\\train8Out.txt");
			ArrayList<FileInputStream> v = new ArrayList<FileInputStream>();
			v.add(fin1);
			v.add(fin2);
			v.add(fin3);
			v.add(fin4);
			v.add(fin5);
			v.add(fin6);
			v.add(fin7);
			v.add(fin8);
			Enumeration en= Collections.enumeration(v);
			SequenceInputStream sis = new SequenceInputStream(en);
			//输出
			FileOutputStream fout = new FileOutputStream("test\\train1heBingOut.txt");
			BufferedOutputStream bos =new BufferedOutputStream(fout);
		
			byte[] buf =new byte[1024];
			int len = 0;
			while((len=sis.read(buf))!=-1){
				bos.write(buf, 0, len);
			}
			
			bos.close();
			sis.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		
		
	}
	/**
	 * 按指定大小切(如每份最大不超过1KB),
	 * 
	 */
	private static void qieGe() {
		try {
			//输入
			FileInputStream fin = new FileInputStream("test\\train1In.txt");
			BufferedInputStream bis = new BufferedInputStream(fin);
			int count=1;
			//输出
			
			
			byte[] buf= new byte[1024];
			int len = 0;
			while((len=bis.read(buf))!=-1){
				FileOutputStream fout = new FileOutputStream("test\\train"+count+"Out.txt");
				BufferedOutputStream bos = new BufferedOutputStream(fout);
				bos.write(buf,0,len);
				count++;
				bos.flush();
			}
			bis.close();
			
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}

package cn.hncu.app;

import java.io.IOException;
import java.io.UnsupportedEncodingException;

import org.junit.Test;

public class StringCut {
	public static void main(String[] args) {
		String str = "ab飝";
		try {
			byte[]	buf = str.getBytes("gbk");
			for(byte b:buf){
				System.out.print(b+" ");
			}
			System.out.println();
			for(int i=0;i<=buf.length;i++){
				System.out.println(i+":"+CutString(str,i));
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}
	/**
	 * 这里初入JUnit :不通过main来测试我们的方法的运行状况。
	 * @throws IOException
	 */
	@Test
	public void test() throws IOException{
		String str ="ab你好飝";
		byte[] buf = str.getBytes("gbk");
		for(byte b:buf){
			System.out.print(b+" ");
			
		}
		System.out.println();
	}
	private static String CutString(String str, int len) throws IOException {
		String encoding = System.getProperty("file.encoding");
		if("gbk".equalsIgnoreCase(encoding)){
			return CutStringGbk(str, len);
		}
		if("utf-8".equalsIgnoreCase(encoding)){
			return CutStringUtf8(str, len);
		}
		throw new RuntimeException("不支持当前系统的编码");
	}
	private static String CutStringUtf8(String str, int len)throws IOException {
		byte[] buf = str.getBytes("utf-8");
		int count=0;
		for(int i=len-1;i>=0;i--){
			if(buf[i]<0){
				count++;
			}else{
				break;
			}
		}
		return new String(buf,0,len-(count%3));
	}
	private static String CutStringGbk(String str, int len) throws IOException {
		byte[] buf = str.getBytes("gbk");
		int count=0;
		for(int i=len-1;i>=0;i--){
			if(buf[i]<0){
				count++;
			}else{
				break;
			}
		}
		return new String(buf,0,len-(count%2));
	}

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值