11 IO流总结及相关练习题

一 IO流总结



练习一

package Stream;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;

/*
 * IO流复制文本文件的五种方式
 * 数据源  
 *        limi.txt   字符流    读   Reader   InputStreamReader(FileReader)
 *
 * 目的地
 *        zxx.txt    字符流    写  Writer   OutputStreamWriter(FileWriter)
 */
public class IOstearmDemotest01 {
	public static void main(String[] args) throws IOException   {
		method1();//字符流一次读取一个字符
//		method2();//字符流一次读取一个字符数组
//		method3();//缓冲流的特殊功能
//		method4();//缓冲流一次读取一个字符
//		method5();//缓冲流一次读取一个字符数组
	}

/**********11111111111111111111111111111**********************/
	public static void method1() throws IOException {
		//数据源
		FileReader fr1 = new FileReader("limi.txt");
		//目的地
		FileWriter fw1 = new FileWriter(" zxx.txt");
		//一次读取一个字符
		int by =0 ;
		while((by=fr1.read())!=-1){
			fw1.write((char)by);
		}
		//释放资源
		fr1.close();
		fw1.close();
	}
	/**********222222222222222222222222 **********************/
	public static void method2() throws IOException {
		//数据源
		FileReader fr2 = new FileReader("limi.txt");
		//目的地
		FileWriter fw2 = new FileWriter(" zxx.txt");
		//一次读取一个字符数组
		char[] ch = new char[1024];
		int len = 0;
		while((len=fr2.read(ch))!=-1){
			fw2.write(ch,0,len);
		}
		//释放资源
		fr2.close();
		fw2.close();
	}
	/**********333333333333333333333333333*********************/
	public static void method3() throws IOException {
	//数据源
	BufferedReader br3 = new BufferedReader(new FileReader("limi.txt"));
	//目的地
	BufferedWriter bw3 = new BufferedWriter(new FileWriter("zxx.txt"));
	//特殊功能
	String len = null ;
	while((len =br3.readLine())!= null){
		bw3.write(len);
		bw3.newLine();
	}
	//释放资源
	br3.close();
	bw3.close();
 }
	/**********4444444444444444444444444444*********************/
   public static void method4() throws IOException {
		//数据源
		BufferedReader br4 = new BufferedReader(new FileReader("limi.txt"));
		//目的地
		BufferedWriter bw4 = new BufferedWriter(new FileWriter("zxx.txt"));
		//一次读取一个字符串
		//一次读取一个字符
		int by =0 ;
		while((by=br4.read())!=-1){
			bw4.write((char)by);
		}
		//释放资源
		br4.close();
		bw4.close();
	}
	/**********5555555555555555555555555555555555*********************/
	public static void method5() throws IOException {
		//数据源
		BufferedReader br5 = new BufferedReader(new FileReader("limi.txt"));
		//目的地
		BufferedWriter bw5 = new BufferedWriter(new FileWriter("zxx.txt"));
		//一次读取一个字符串的一部分
		char[] ch = new char[1024];
		int len = 0;
		while((len=br5.read(ch))!=-1){
			bw5.write(ch,0,len);
		}
		//释放资源
		br5.close();
		bw5.close();
	}
}

练习二

package Stream;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;


/*
 * IO流复制图片的四种方式
 * 数据源  
 *        华清池.jpg      字节流    读   InputStream   FileInputStream
 *
 * 目的地
 *        东方不败.jpg    字节流    写  OutputStream   FileOutputStream
 */
public class IOstearmDemotest02 {
	public static void main(String[] args) throws IOException   {
//		method1();//字节流一次读取一个字节
//		method2();//字节流一次读取一个字节数组
//		method3();//字节缓冲流一次读取一个字节
		method4();//字节缓冲流一次读取一个字节数组
	}

/**********11111111111111111111111111111**********************/
	public static void method1() throws IOException {
		//数据源
		FileInputStream fi1 = new FileInputStream("华清池.jpg");
		//目的地
		FileOutputStream fo1 = new FileOutputStream("东方不败.jpg");
		//一次读取一个字节
		int by =0 ;
		while((by=fi1.read())!= -1){
			fo1.write(by);
		}
		//释放资源
		fi1.close();
		fo1.close();
	}
	/**********222222222222222222222222 **********************/
	public static void method2() throws IOException {
		//数据源
		FileInputStream fi2 = new FileInputStream("华清池.jpg");
		//目的地
		FileOutputStream fo2 = new FileOutputStream("东方不败.jpg");
		//一次读取一个字节数组
		byte[] ch = new byte[1024];
		int len = 0;
		while((len=fi2.read(ch))!=-1){
			fo2.write(ch,0,len);
		}
		//释放资源
		fi2.close();
		fo2.close();
	}
	/**********333333333333333333333333333*********************/
   public static void method3() throws IOException {
	    //数据源
		BufferedInputStream bis1 = new BufferedInputStream(new FileInputStream("华清池.jpg"));
		//目的地
		BufferedOutputStream bos1 = new BufferedOutputStream(new FileOutputStream("东方不败.jpg"));
		//一次读取一个字节
		int by =0 ;
		while((by=bis1.read())!=-1){
			bos1.write(by);
		}
		//释放资源
		bis1.close();
		bos1.close();
	}
	/**********44444444444444444444444444444444*********************/
	public static void method4() throws IOException {
		//数据源
		BufferedInputStream bis2 = new BufferedInputStream(new FileInputStream("华清池.jpg"));
		//目的地
		BufferedOutputStream bos2 = new BufferedOutputStream(new FileOutputStream("东方不败.jpg"));
		//一次读取一个字符串的一部分
		byte[] ch = new byte[1024];
		int len = 0;
		while((len=bis2.read(ch))!=-1){
			bos2.write(ch,0,len);
		}
		//释放资源
		bis2.close();
		bos2.close();
	}
}

练习三 把ArrayList集合中的字符串数据存储到文本文件

package Stream;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
/*
 * 把ArrayList集合中的字符串数据存储到文本文件
 * 分析 
 * 数据源
 *      ArrayList集合中的字符串数据     字符流
 *      
 * 目的地
 *      文本文件       字符流
 */
public class IOstearmDemotest03 {
	public static void main(String[] args) throws IOException{
		
		
		//首先要有集合封装数据源
		ArrayList<String> arr  = new ArrayList<String> ();
		arr.add("hello");
		arr.add("world");
		arr.add("java");
		
	    //封装目的地
		BufferedWriter bw = new BufferedWriter(new FileWriter("a.txt"));
		for(String s:arr){
			bw.write(s);
			bw.newLine();
			bw.flush();
		}
		bw.close();
	}
	}

练习四 把文本中的文件存储到集合中

package Map.HashMap;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;

/*把文本中的文件存储到集合中
 * 
 * 分析
 * 数据源  文本文件
 * a.txt   字符流
 * 
 * 目的地   集合
 *  ArrayList   
 * */
public  class IOStreamDemo{
	
	public static void main(String[] args) throws IOException {
		
		//数据源
		BufferedReader  br = new BufferedReader(new FileReader("a.txt"));
		//目的地
		ArrayList<String> array = new 	ArrayList<String>();
		
		 char[] ch = new char[1024]; 
		 String line = null;
		 while((line=br.readLine())!= null){
			 array.add(line);
		 }
		 ch.clone();
		 //遍历集合
		 for(String s:array){
			 System.out.println(s);
			 
		 }
	}
}

练习五:一个文本文件存储了几个名称,请写一个程序随机获取一个人的名字

package Map.HashMap;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Random;

/*我有一个文本文件存储了几个名称,请写一个程序随机获取一个人的名字
 *  分析:
 *    A:把文本文件中的数据存储到集合中
 *    B:随机产生一个索引
 *    C:根据索引获取一个值
 * 
 * */
public  class IOStreamDemo001{
	
	public static void main(String[] args) throws IOException {
		
		//数据源
		BufferedReader  br = new BufferedReader(new FileReader("a.txt"));
		
		//目的地
		ArrayList<String> array = new 	ArrayList<String>();
		
		 char[] ch = new char[1024]; 
		 String line = null;
		 while((line=br.readLine())!= null){
			 array.add(line);
		 }
		 ch.clone();
		 //获取随机数组
			Random r = new Random();
			int index = r.nextInt(array.size());//产生的随机数大小在0-size之间
		 //根据索引获取随机数的值
			String name =  array.get(index);
			System.out.println("该幸运者是     "+name);
	}
}

练习六: 复制单级文件夹

package Map.HashMap;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
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.util.ArrayList;
import java.util.Random;

/*复制单级文件夹
 * 数据源:e://demo
 * 目的地:e://test
 * 
 * 分析
 *   A:封装目录
 *   B: 获取该目录下的所有文件的File数组
 *   C:遍历File数组得到每一个File对象
 *   D:把该File进行复制
 *   注意文件会自动创建,而文件夹不会
 *   
 * */
public  class IOStreamDemo002{
	
	public static void main(String[] args) throws IOException{
//		 A:封装目录
		File srcFolder = new File("e://demo");
//		B:封装目的地
		File destFolder = new File("e://test");
		//如果目的地文件夹不存在,就创建
		if (!destFolder.exists()) {
			destFolder.mkdir();
		}
//		获取该目录下的所有文本的File数组
		File[] fileArray = srcFolder.listFiles();
		
		for(File f:fileArray){
//			e:\demo\IoDemo09.java
			String name = f.getName();//IoDemo09.java
			File newFile  = new File(destFolder, name);//e:\test\IoDemo09.java
			copeFile(f,newFile);
		}
	}

	public static void copeFile(File f, File newFile) throws IOException {
		BufferedInputStream bis = new BufferedInputStream(new FileInputStream(f));
		BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(newFile));
		ArrayList<File> ary = new ArrayList<File>();
		
		
		byte[] by = new byte[1024];
		int len = 0;
		while((len = bis.read(by))!=-1){
			bos.write(by, 0, len);
		}
		bos.close();
		bis.close();
		
	}	
}

练习七:复制指定目录下指定文件,并修改后缀名

package Map.HashMap;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
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.util.ArrayList;
import java.util.Random;

/*复制指定目录下指定文件,并修改后缀名
 *   
 * */
public  class IOStreamDemo003{
	
	public static void main(String[] args) throws IOException {
		File srcFolder = new File("e://io");
		File destFolder = new File("e://wy");
		if(!destFolder.exists()){
			destFolder.mkdir();
		}
		File[] fileFolder = srcFolder.listFiles();
		for(File file:fileFolder){
		 if (file.isFile()&& file.getName().endsWith(".java")) {
			String name =  file.getName();
             File newFile = new File(destFolder, name);
         	copyFile(file,newFile);
		}
		 //在目的地目录下改名
		 File[] filefolder = destFolder.listFiles();
		 for(File F:filefolder){
//			 System.out.println(F);//e:\wy\IoDemo04.java
			 String name = F.getName();
//			 System.out.println(name);
			 String newname = name.replace(".java", ".jad");
			 File newFile1 = new File(destFolder,newname);
			 System.out.println(newFile1);
			 
		 }
	}
	}
	public static void copyFile(File file, File newFile) throws IOException {
		BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
		BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(newFile));
		byte[] by = new byte[1024];
		int len = 0;
		while((len = bis.read(by))!= -1 ){
			bos.write(by, 0, len);
		}
		
		bis.close();
		bos.close();
	}
}

练习八:复制多级文件夹

package IO;

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

/**
 * 需求:复制多级文件夹
 *
 *数据源 F:\zxx\demos
 *目的地 F:\\
 *   分析
 *     A:封装数据源File
 *     B:封装目的地File
 *     C:判断该File是文件夹还是文件
 *        a 是文件夹
 *             就在目的地目录下创建该文件夹
 *             获取该File对象下的所有文件或文件夹File对象
 *             遍历每一个File对象
 *             回到C
 *        b 是文件
 *             就复制(字节流)
 *
 **/
public class StreamDemo01 {
	public static void main(String[] args) throws IOException {
		//封装数据源File
		File srcFile = new File("F:\\zxx\\demos");
		//封装目的地File
		File descFile = new File("F:\\");
		
		//复制文件夹功能
		CopeFoledor(srcFile,descFile);
	}

	public static void CopeFoledor(File srcFile, File descFile) throws IOException {
		//判断该File是文件夹还是文件
				if(srcFile.isDirectory()){
					//文件夹
					File newFodler =  new File(descFile,srcFile.getName());
					newFodler.mkdir();
					//获取该File对象下的所有文件或文件夹File对象
					File[] file = srcFile.listFiles();
					for(File f:file){
						CopeFoledor(f,newFodler);	
					}
				}else{
					//文件
					File newFile =  new File(descFile,srcFile.getName());
					CopeFile(srcFile,newFile);
				}
	}
	//专门复制文件
      public static void CopeFile(File srcFile, File newFile) throws IOException {
    	BufferedInputStream  bis = new BufferedInputStream(new FileInputStream(srcFile));
  		BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(newFile));
  		byte[] cr = new byte[1024];
  		int len = 0;
  		while((len= bis.read(cr))!= -1){
  			bos.write(cr, 0, len);
  			
  		}
  		bis.close();
  		bos.close();
		
	}
}



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【程序1】 题目: 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 【程序2】 题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高    于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提    成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于    40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于    100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数? 【程序3】 题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 【程序4】 题目:输入某年某月某日,判断这一天是这一年的第几天? 【程序5】 题目:输入三个整数x,y,z,请把这三个数由小到大输出。 【程序6】 题目:用*号输出字母C的图案。 【程序8】 题目:输出9*9口诀。 【程序9】 题目:要求输出国际象棋棋盘。 【程序10】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月    后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 【程序11题目:判断101-200之间有多少个素数,并输出所有素数。 【程序12】 题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数    本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。 【程序13】 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。 【程序14】 题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,    60分以下的用C表示。 【程序15】 题目:输入两个正整数m和n,求其最大公约数和最小公倍数。 【程序16】 题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 【程序17】 题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时    共有5个数相加),几个数相加有键盘控制。 【程序18】 题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程    找出1000以内的所有完数。 【程序19】 题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在    第10次落地时,共经过多少米?第10次反弹多高? 【程序20】 题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续    判断第二个字母。 【程序21】 题目:求100之内的素数    【程序22】 题目:对10个数进行排序 【程序23】 题目:求一个3*3矩阵对角线元素之和 【程序24】 题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。 【程序25】 题目:将一个数组逆序输出。 【程序26】 题目:取一个整数a从右端开始的4~7位。 【程序27】 题目:打印出杨辉三角形(要求打印出10行)    【程序28】 题目:输入3个数a,b,c,按大小顺序输出。    【程序29】 题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。 【程序30】 题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出    圈子,问最后留下的是原来第几号的那位。 【程序31】 题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数    1/1+1/3+...+1/n(利用指针函数) 【程序32】 题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只    猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了    一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,    问海滩上原来最少有多少个桃子? 【程序33】 题目:求0—7所能组成的奇数个数。 【程序34】 题目:一个偶数总能表示为两个素数之和

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值