Java practice io的综合练习总结

写在之前:
对于io这部分的学习 从一开始的文件对象就已经感受到 要应用的方法很多很难去把这些方法根据需求进行灵活运用 这和之前学习C语言的文件操作有关 之前就没咋学好 但是Java的文件这方面确实比C语言易理解 。

感谢 how2J 教程带我学Java
综合练习分三个题对以往学习的常用方法进行评测掌握情况

1、文件复制

package test;
import java.io.*;
import java.util.Scanner;

public class testFile{
	public static void main(String[] args) {
		String str1="D:\\Jproject\\流.txt";
		String str2="D:\\Jproject\\by.txt";
		copyFile(str1,str2);
	}
	public static void copyFile(String srcFile,String destFile) {
		File f1=new File(srcFile);
		File f2=new File(destFile);
		
		try(
				FileInputStream fi=new FileInputStream(f1);
				FileOutputStream fo=new FileOutputStream(f2);
				FileReader fg=new FileReader(f2);
				BufferedReader fb=new BufferedReader(fg);
				)
		{
			byte[] by=new byte[(int)f1.length()];
			fi.read(by);
			fo.write(by);
			while(fb.readLine()!=null)
			{
				String str=fb.readLine();
				System.out.println(str);
			}
		}catch(IOException e)
		{
			e.printStackTrace();
		}
	}
}

文件复制 是在这三个题我做着是最轻松的 这和目前在学习的字符流 缓存流有关 还没忘记

2、复制文件夹
复制文件和复制文件夹 一字之差 但是复制文件夹我第一反应就是回去看文件对象里的一些常用方法 试着码了一下 但是还是忽略了文件和文件夹的关系 文件夹打开还有文件夹就还得打开至文件 ——让我知道以后关于文件夹的操作 和递归思想是有很大关系的

public static void copyFolder(String srcfolder,String destfolder)
	{
		File f1=new File(srcfolder);
		File f2=new File(destfolder);
		
		if(!f2.exists())
		{
			f2.getParentFile().mkdirs();
		}
		File[] fz=f1.listFiles();
		  if (fz.length == 0) {
	            f1.mkdirs();
	        }
		  else {
		for (File file : fz) {
			if(file.isDirectory())
			{
				copyFolder(file.getAbsolutePath(),destfolder+"\\"+file.getName());
			}
			else if(file.isFile())
			{
				copyFolder(file.getAbsolutePath(), destfolder+"\\"+file.getName());
			}
		}
		  }
	}
}
  

越往后学 要回顾的越多 方法自身调用就是递归 遇到层层包含的问题 一般用递归层层打开。

3、查找文件内容
也是对于文件操作的必备技能。
其一般是把包含的特定字符串的文件全部找出 也是检索作用。
其对象涉及文件 那么存在文件夹也需要递归

public static void search(File folder, String search)
	 
	{
	
	File[] fi=folder.listFiles();
	for (File file : fi) {
		if(file.isDirectory())
		{
			search(file,search);
		}
		else
		{
			String line;
			try(
				FileReader fr=new FileReader(file);
			    BufferedReader br = new BufferedReader(fr);
					)
			{
				while(null!=(line=br.readLine()))
				{
					 if(line.contains(search)){
                         System.out.printf("找到子目标字符串%s,在文件%s\n",search,file.getAbsolutePath());
                         break;
				}
			}
			}catch(IOException e)
			{
				e.printStackTrace();
			}
		}
	}

也是先分两种情况 一是File[] fi=folder.listFiles();遍历的文件数组 是文件夹就需要进行递归直至找到文件 二是遍历过程中已是文件就直接进行相应操作又考虑到文件内容多 用缓存流最好一行行读取进行相应字符串的查询 调用String类里的方法Contain 快捷查找

总结: 更多考验的是 对于基础的类的方法掌握熟练程度 在对其进行记忆的同时也得灵活运用 可以在之后对操纵字符串 以及比较字符串 Character String 文件对象 Data Calendar 日期格式化所涉及的类及方法 这些所含的常用方法进行画图分类记忆

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值