java编程题有难度的_算法与编程面试题 不喜勿喷 难度指数:*****...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
3、编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad。
(大家正在做上面这道题,网上迟到的朋友也请做做这道题,找工作必须能编写这些简单问题的代码!)
答:listFiles方法接受一个FileFilter对象,这个FileFilter对象就是过虑的策略对象,不同的人提供不同的FileFilter实现,即提供了不同的过滤策略。
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class Jad2Java {
public static void main(String[] args) throws Exception {
File srcDir = new File("java");
if(!(srcDir.exists() && srcDir.isDirectory()))
throw new Exception("目录不存在");
File[] files = srcDir.listFiles(
new FilenameFilter(){
public boolean accept(File dir, String name) {
return name.endsWith(".java");
}
}
);
System.out.println(files.length);
File destDir = new File("jad");
if(!destDir.exists()) destDir.mkdir();
for(File f :files){
FileInputStream fis = new FileInputStream(f);
String destFileName = f.getName().replaceAll("\\.java$", ".jad");
FileOutputStream fos = new FileOutputStream(new File(destDir,destFileName));
copy(fis,fos);
fis.close();
fos.close();
}
}
private static void copy(InputStream ips,OutputStream ops) throws Exception{
int len = 0;
byte[] buf = new byte[1024];
while((len = ips.read(buf)) != -1){
ops.write(buf,0,len);
}
}
}
由本题总结的思想及策略模式的解析:
1.
class jad2java{
1. 得到某个目录下的所有的java文件集合
1.1 得到目录 File srcDir = new File("d:\\java");
1.2 得到目录下的所有java文件:File[] files = srcDir.listFiles(new MyFileFilter());
1.3 只想得到.java的文件: class MyFileFilter implememyts FileFilter{
public boolean accept(File pathname){
return pathname.getName().endsWith(".java")
}
}
2.将每个文件复制到另外一个目录,并改扩展名
2.1 得到目标目录,如果目标目录不存在,则创建之
2.2 根据源文件名得到目标文件名,注意要用正则表达式,注意.的转义。
2.3 根据表示目录的File和目标文件名的字符串,得到表示目标文件的File。
//要在硬盘中准确地创建出一个文件,需要知道文件名和文件的目录。
2.4 将源文件的流拷贝成目标文件流,拷贝方法独立成为一个方法,方法的参数采用抽象流的形式。
//方法接受的参数类型尽量面向父类,越抽象越好,这样适应面更宽广。
}
分析listFiles方法内部的策略模式实现原理
File[] listFiles(FileFilter filter){
File[] files = listFiles();
//Arraylist acceptedFilesList = new ArrayList();
File[] acceptedFiles = new File[files.length];
int pos = 0;
for(File file: files){
boolean accepted = filter.accept(file);
if(accepted){
//acceptedFilesList.add(file);
acceptedFiles[pos++] = file;
}
}
Arrays.copyOf(acceptedFiles,pos);
//return (File[])accpetedFilesList.toArray();
}
java编程题有难度的_算法与编程面试题 不喜勿喷 难度指数:*****...相关推荐
- java 7年_笃学私教:7年Java开发(月薪37K)分享正确的自学路线,不喜勿喷!
原标题:笃学私教:7年Java开发(月薪37K)分享正确的自学路线,不喜勿喷! 趁着昨晚空闲和今早的时间,编辑这一篇帖子,写下当初我自学Java走的弯路,希望大家引以为戒,不要多走前人走过的弯路,浪费 ...
- 7年java水平_7年Java开发(月薪37K)分享正确的自学路线,不喜勿喷
7年Java开发(月薪37K)分享正确的自学路线,不喜勿喷 原创编程仔日常2020-10-13 10:18:21 趁着昨晚空闲和今早的时间,编辑这一篇帖子,写下当初我自学Java走的弯路,希望大家引以 ...
- java中使用ElasticSearch聚合查询代码实例(个人笔记,不喜勿喷)
PS→无奈:拥有梦想只是一种智力,实现梦想才是一种能力. 空闲之余就把先前做过的一个通过ElasticSearch的聚合来实现查询当月实际签到的天数记录一下,纯留下点记忆,大家勿喷. 1.如果不了解e ...
- Java开发私教_笃学私教:7年Java开发(月薪37K)分享正确的自学路线,不喜勿喷...
趁着昨晚空闲和今早的时间,编辑这一篇帖子,写下当初我自学Java走的弯路,希望大家引以为戒,不要多走前人走过的弯路,浪费时间.到今年年底结束,我做Java开发已经七年的时间了,现在月薪37k已经算知足 ...
- c语言编程题考试自动评分系统,C语言编程题考试自动评分系统简介.ppt
C语言编程题考试自动评分系统简介 主要内容 教材简介 学习方法 机考系统简介 教材简介 教学理念的更新 教材简介 教材简介 国内55所院校使用 新版增加的内容 强化知识点.算法.编程方法与技巧 [编程 ...
- c语言编程题输入两个直角边,C语言编程 直角三角形已知两边求第三边
C语言编程题 求大神解答 好久没写C了,不知道对不对:intsum=0;intindex=0;for(;indexsum+=a[2][index];}returnsum; C语言编程题,求分段函数 刚 ...
- 机器人离线编程画圆误差解决方案_机器人离线编程的误差来源分析与消除办法...
随着机器人应用领域越来越广,传统的示教编程这种编程手段有些场合变得效率非常低下,于是离线编程应运而生,并且应用越来越普及.但初用离线编程的朋友,总会被最后生成轨迹的误差所困惑,而导致这些误差的原因,包 ...
- 浪潮编程题python石头排序_数分 | 沙滩排石头-浪潮提前批笔试 Java、C++、Python
题目 沙滩摆放着一排大小不一的球形石头,已知第i个石头的半径为ri,不存在两个石头半径相等.现要求通过移动石头使摆放的石头从左往右半径递增.每次可选择一块石头,并把它放在剩下n-1块石头的最左边或最右 ...
- java中printarray和selectsort方法_算法题(一)
目录 1 左神部分集锦 2 Leetcode前150题 3 牛客网剑指offer 4 JavaG 5 题目中的细节处理 1 左神部分集锦 1.1 Code01_FindNumber_B_In_A 在有 ...
最新文章
- nero结果,对应的分析。如下。
- 江苏省三级偏软考试大纲
- NR 5G UE发起的去注册流程
- Aptana Studio 3 汉化简体中文版
- [html] 写页面布局时需要考虑哪些方面的因素?
- [转] 一文弄懂神经网络中的反向传播法——BackPropagation
- c语言编写两个矩阵的乘积,如何用c语言编写两个模糊矩阵相乘的程序?
- 关于FragmentManager动态管理Fragment时Fragment生命周期的探究
- 桌面应用程序 azure_如何在Azure中连接我们的C#应用​​程序
- 适用于vue的移动端table插件_vue-mobile
- html5手机详情页,H5网页打开app内部详情页
- java word文件转图片
- 摩尔庄园怎么显示全部服务器,摩尔庄园手游服务器查看区别方法
- as打开时出现The environment variable JAVA_HOME (with The value of C:\Java\jdk1.8.0_101\bin) does not poin
- java post 405 错误
- 软件破解简单示例演示
- 谷歌chrome浏览器 - 关于插件,这一篇就够了
- 第一模块 jdk与jre、==与equals、Math.round(-1.5)、 String、操作字符串的类、字符串反转、抽象类必须要有抽象方法吗、普通类和抽象类、BIO NIO AIO
- java批量文件打包成压缩成zip下载和大量数据导出excel时的处理方法
- HTML及CSS学习笔记 06 - CSS简介和常见的选择器
热门文章
- 2021-09-25
- 推荐一款好工具:16进制字节搜索工具 C#的效率
- 题目2:隐式图的搜索问题(A*算法解决八数码)
- 1.2 String字符串和整型int的相互转换,valueOf() 、parse()和toString()
- 2.2 进阶-禁忌雷炎
- 1030 Travel Plan (30 分) 【难度: 中 / 知识点: 最短路】
- ppt的一些基础操作
- Java多线程(1)—线程初探
- Oracle 的基本特点,并完整描述安装过程
- Spring boot自动注册DispatcherServlet