JavaIO简单练习

package IO;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import com.sun.org.apache.bcel.internal.generic.IINC;

import junit.framework.TestCase;
public class Demo1 extends TestCase{
	public void test1() throws IOException{
		System.out.println("test1___________________________________________________");
		String str="JONES张三";
//	建立一个输入流对象用于以字节的方式来将str数据读取到当前输入流当中去
		InputStream iStream=new ByteArrayInputStream(str.getBytes());
		int i=0;
		byte[] bs=new byte[5];
		i=iStream.read(bs);
		/**
		 * 将字节数组转换为字符串对象输出:张三S
		 * 在进行第二次while循环的时候会输出上述内容,其中最后的S是因为字节数组对象当中的最后一个字节还没有进行覆盖
		 */
		while(i!=-1)
		{
//			将输入流对象当中的字节数据读入到当前缓存的byte数组当中去
			System.out.println("每次所读取的字节数据的长度为:"+i);
			System.out.println("当前字节数组当中的内容为:");
			for (byte b : bs) {
				System.out.print(b+"  ");
			}
			System.out.println("\n");
			System.out.println("将字节数组转换为字符串对象输出:"+new String(bs));
			i=iStream.read(bs);
		}
		iStream.close();
	}
	
	public void test2() throws IOException
	{
		System.out.println("test2___________________________________________________");
		String str="JONES张三";
//		建立一个输入流对象用于以字节的方式来将str数据读取到当前输入流当中去
			InputStream iStream=new ByteArrayInputStream(str.getBytes());
//		建立一个缓存输入流对象用于实现对输入流当中所读取到的内容进行存放
			BufferedInputStream bufferedInputStream=new BufferedInputStream(iStream);
			int i;
			byte[] bs=new byte[5];
			i=bufferedInputStream.read(bs);
			while(i!=-1)
			{
				System.out.println("每次所读取的字节数据的长度为:"+i);
				System.out.println("当前字节数组当中的内容为:");
				for (byte b : bs) {
					System.out.print(b+"  ");
				}
				System.out.println("\n");
//		为解决test1当中所出现的问题,当第二次对数据进行读取之后进行字符串转换的时候只对所读取有效长度的字节数据将之转变为String类型
				System.out.println("将字节数组转换为字符串对象输出:"+new String(bs, 0, i));
				i=bufferedInputStream.read(bs);
			}
			iStream.close();
	}
	
	/**
	 * 将一个文件对象当中的内容写入到另一个文件对象当中去
	 * @throws Exception 
	 */
	public void test3() throws Exception
	{
		System.out.println("------------------------执行test3-------------------------------");
		File srcFile=new File("C:/Users/Administrator/Desktop/宿舍费用使用情况.txt");
		File desFile=new File("C:/Users/Administrator/Desktop/srcFile.txt");
//		将源文件对象读入到输入流对象当中
		InputStream inputStream=new FileInputStream(srcFile);
//		将输入流对象当中的内容读入到缓存输入流当中去
		BufferedInputStream bInputStream=new BufferedInputStream(inputStream);
		byte[] bs=new byte[1024];
//		建立一个输出流管道用于将内存当中bs字节数组中的数据信息写入到目标文件对象当中去
		OutputStream outputStream=new FileOutputStream(desFile);
		BufferedOutputStream bOutputStream=new BufferedOutputStream(outputStream);
		/*
		 * 输入流对象将srcFile文件对象当中的内容读取到内存当中bs字节数组当中
		 * 输出流对象将内存中bs字节数组当中的内容写入到SRCFile文件对象当中
		 */
		while(bInputStream.read(bs)!=-1)
		{
			bOutputStream.write(bs);
		}
		/**
		 * 以上操作全部都是发生在内存当中,即没有在实际的物理硬盘当中进行文件的创建操作
		 * 只有到对所有的流进行关闭并进行内存回收的时候才会自动的在指定的位置创建一个desFile文件对象
		 * 然后将内存当中的相关数据写入到物理硬盘当中
		 */
		bOutputStream.close();
		outputStream.close();
		bInputStream.close();
		inputStream.close();
	}
}


猜你喜欢

转载自blog.csdn.net/qq_34970891/article/details/80751708