package com.swift.jinji;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner; /*从控制台获取输入的文件目录然后将该目录(包含子目录)下的.java文件复制到e:/java文件夹中,并统计java文件的个数.
提示:如果有相同的名称的文件,如果两个Test01.java,则拷贝到目标文件夹时只能有一个Test01.java,另一个Test01.java要修改为另一个名称:该名称可随机生成,只要不重复即可.*/ public class CopyJavaSameName { public static void main(String[] args) { File destDir=new File("e:/java");
if(!destDir.exists()) {
System.out.println("目标目录不存在,即将建立.");
destDir.mkdirs();
}
File srcDir=getDir();
copyDir(srcDir,destDir);
System.out.println("复制完成");
} private static void copyDir(File srcDir, File destDir) {
int i=0;
File[] files=srcDir.listFiles(new FileFilter() { @Override
public boolean accept(File pathname) {
if(pathname.getName().toLowerCase().endsWith(".java"))
return true;
return false;
}});
for(File file:files) {
String name=file.getName();
File destFile=new File(destDir,name);
if(!destFile.exists()) {
copyFile(file,destFile);
}else { String nameG=destFile.getName()+"-副本";
File destFileG=new File(destDir,nameG);
copyFile(file,destFileG);
} }
} private static void copyFile(File file, File destFile) { BufferedOutputStream bos=null;
BufferedInputStream bis=null;
try {
bos=new BufferedOutputStream(new FileOutputStream(destFile));
bis=new BufferedInputStream(new FileInputStream(file));
byte[] buf=new byte[1024];
int len;
while((len=bis.read(buf))!=-1) {
bos.write(buf, 0, len);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} private static File getDir() { Scanner scan=new Scanner(System.in);
System.out.println("请输入一个目录");
String str=scan.nextLine();
File dir=new File(str);
if(!dir.exists()) {
System.out.println("目录不存在.");
}
if(!dir.isDirectory()) {
System.out.println("不是一个目录");
}
return dir;
} }

对加密文件计算字母个数

package com.swift.jinji;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Comparator;
import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap; /*在d盘目录下有一个加密文件a.txt(文件里只有英文和数字),密码是“heima”
当密码输入正确时才能读取文件里的数据。现要求用代码来模拟读取文件的过程,并统计文件里各个字母出现的次数,并把统计结果按照如下格式输出到d盘的count.txt中。
a:2个
b:3个
c:4个
............*/ public class PasswordFileCharacterNums2 { public static void main(String[] args) { File passwordFile=new File("d:/stu.txt");
String password="heima";
readFile(passwordFile,password); } private static void readFile(File passwordFile, String password) { Scanner scan =new Scanner(System.in);
while(true) { System.out.println("请输入一个正确的文件密码");
String passwordInput=scan.nextLine();
if(passwordInput.equals(password)) {
System.out.println("文件密码正确.");
break;
}
}
BufferedReader br=null;
BufferedWriter bw=null;
try {
br=new BufferedReader(new FileReader(passwordFile));
File destFile=new File("count.txt");
bw=new BufferedWriter(new FileWriter(destFile));
Map<Character,Integer> map=new TreeMap<>(new Comparator<Character>() {
@Override
public int compare(Character o1, Character o2) {
int num=(int)o1-(int)o2;
return num;
}
});
String line;
while((line=br.readLine())!=null) {
char[] chars=line.toCharArray();
for(char c:chars) {
if(!map.containsKey(c)) {
map.put(c, 1);
}else {
map.put(c, map.get(c)+1);
}
}
}
System.out.println(map);
for(Character c:map.keySet()) {
bw.write(" "+c+":"+map.get(c)+"个");
bw.newLine();
bw.flush();
}
System.out.println("map输出成功"); } catch (FileNotFoundException e) {
e.printStackTrace();
} catch(IOException e) {
e.printStackTrace();
}finally {
try {
bw.close();
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} }

java基础IO流 复制键盘录入的目录,复制其中的.java文件到指定目录,指定目录中有重名,则改名 对加密文件计算字母个数的更多相关文章

  1. Java基础---Java---IO流-----读取键盘录入、InputStreamReader、转换流、OutputStreamWriter、InputStreamReader

    字符流: FileReader FileWriter BufferedReader BufferedWriter 字节流: FileInputStream FileOutputStream Buffe ...

  2. Java基础-IO流对象之打印流(PrintStream与PrintWriter)

    Java基础-IO流对象之打印流(PrintStream与PrintWriter) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.打印流的特性 打印对象有两个,即字节打印流(P ...

  3. Java基础-IO流对象之序列化(ObjectOutputStream)与反序列化(ObjectInputStream)

    Java基础-IO流对象之序列化(ObjectOutputStream)与反序列化(ObjectInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.对象的序 ...

  4. Java基础-IO流对象之字符缓冲流(BufferedWriter与BufferedReader)

    Java基础-IO流对象之字符缓冲流(BufferedWriter与BufferedReader) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.字符缓冲流 字符缓冲流根据流的 ...

  5. Java基础-IO流对象之字节缓冲流(BufferedOutputStream与BufferedInputStream)

    Java基础-IO流对象之字节缓冲流(BufferedOutputStream与BufferedInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在我们学习字 ...

  6. Java基础-IO流对象之字符类(FileWrite与FileReader)

    Java基础-IO流对象之字符类(FileWrite与FileReader) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.常见编码简介 1>ASCII 我们知道计算机是 ...

  7. Java基础-IO流对象之字节流(Stream)

    Java基础-IO流对象之字节流(Stream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在前面我分享的笔记中,我们一直都是在操作文件或者文件夹,并没有给文件中写任何数据.现 ...

  8. 《Java基础——IO流》

    Java基础--IO流       一.字节流:   1.输入流 (InputStream) 规则: 此处用于读取txt文件中的内容.   代码: import java.io.*; public c ...

  9. Java基础IO流(二)字节流小案例

    JAVA基础IO流(一)https://www.cnblogs.com/deepSleeping/p/9693601.html ①读取指定文件内容,按照16进制输出到控制台 其中,Integer.to ...

随机推荐

  1. RTT之内核服务函数

    一 延时函数: rt_thread_delay(t) //调用时进入系统调度. rt_kprintf()函数在kservice.c中实现,如果不使用设备驱动,则由自定义函数void rt_hw_con ...

  2. 电感的Q值

    电感的Q值又称为品质因数,即在通过一定频率信号时,感抗与等效损耗之比.品质因数越高即系统损耗越小效率越高,一般为50`100,最高500左右,再大就会烧毁.一般Q值与很多因素有关:绕线粗细,长度与直径 ...

  3. PCB的版本控制

    http://club.szlcsc.com/article/details_1783_1.html 转载自:http://www.amobbs.com/thread-5606014-1-1.html ...

  4. Django重新整理3

    Forms组件 1.在models.py中我们建立一个新的表关系: class UserInfo(models.Model): user=models.CharField(max_length=32) ...

  5. Hadoop2.X分布式集群部署

    本博文集群搭建没有实现Hadoop HA,详细文档在后续给出,本次只是先给出大概逻辑思路. (一)hadoop2.x版本下载及安装 Hadoop 版本选择目前主要基于三个厂商(国外)如下所示: 基于A ...

  6. 连接MySql的时候报1130的错误解决办法

    部署了一个 数据库采用Mysql的程序,sqlyog连接非本地的Mysql服务器的数据库,居然无法连接很奇怪,报1130错误,ERROR 1130: Host 192.168.3.100 is not ...

  7. WebGL 踩坑系列-3

    WebGL 踩坑系列-3 绘制球体 在 WebGL 中绘制物体时需要的顶点是以直角坐标表示的, 当然了,gl_Position 是一个四维的向量,一般将顶点赋值给 gl_Position 时,最后一维 ...

  8. MVC学习手册之数据注解与验证

    MVC学习手册之数据注解与验证 新建一个MVC5的WEB应用程序,VS2013会自动生成一段代码,以下是Account控制器下Register.cshtml 页面的代码: @model WebAppl ...

  9. 关于hibernate字段映射@colunm出现的问题以及jpa驼峰大写转_小写的问题探究

    关于hibernate字段映射@colunm出现的问题以及jpa驼峰大写转_小写的问题探究2018年04月24日 15:47:26 守望dfdfdf 阅读数:735 标签: @colunmhibern ...

  10. seleenium与Vs结合

    Vs 自带自动化测试录制工具.selenium则是开源的大众工具.在使用发现vs 自带的工具录制方便,但是修改很难.但是可以提供后续的BUG管理和邮件通知,自动构建等功能.selenium在.net平 ...