第四题:.此题要求用IO流完成

  1. 使用File类在D盘下创建目录myFiles, 并在myFiles目录下创建三个文件分别为:info1.txt, info2.txt, info3.txt 。

代码:

package Test3;

import java.io.File;
import java.io.IOException; public class Test1 {
public static void main(String[] args) {
File file=new File("D:\\myFiles");
if(!file.exists()){
file.mkdirs();
}
for (int i = 1; i <= 3; i++) {
File file2=new File(file,"info"+i+".txt");
try {
file2.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} File[] files=file.listFiles();
for (File file2 : files) {
System.out.println(file2);
} }
}

2.向info1.txt, info2.txt, info3.txt 中分别追加内容“第一个文件内容,千锋欢迎你”,“第二个文件内容,中国移动培训专家”,“第三个文件内容,千锋助你高薪就业”。


代码:

package Test3;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException; public class Test2 {
public static void main(String[] args) {
File file=new File("D:\\myFiles");
File[] files=file.listFiles(); String[] strings={"第一个文件内容,千锋欢迎你","第二个文件内容,中国移动培训专家","第三个文件内容,千锋助你高薪就业"};
FileOutputStream fos=null;
for(int i=0;i<files.length;i++){
try {
fos=new FileOutputStream(files[i]);
fos.write(strings[i].getBytes());
fos.flush();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
if(fos!=null){
try {
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} } }
}

3.把info1.txt , info2.txt,info3.txt 用String类中的方法截取到 文件名字,不包括拓展名,将名字变成大写,并且给文件重命名成为 INFO1.txt,INFO2.txt ,INFO3.txt,并复制到myFiles\txt目录下(须用程序创建txt文件夹)


代码:

package Test3;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException; public class Test3 {
public static void main(String[] args) {
File file=new File("D:\\myFiles");
String[] strings=file.list(); File file2=new File("D:\\myFiles\\txt");
if(!file2.exists()){
file2.mkdirs();
} for (String string : strings) {
if(string.endsWith(".txt")){
//获取文件名
String string2=string.substring(0, 5);
//重命名
File file3=new File(file,string);
file3.renameTo(new File(file,string2.toUpperCase()+".txt"));
//复制新文件到txt文件夹下
FileInputStream fis=null;
FileOutputStream fos=null;
try {
fis=new FileInputStream(file3);
fos=new FileOutputStream(new File(file2,string2.toUpperCase()+".txt"));
byte[] bs=new byte[50];
int count=0;
while((count=fis.read(bs))!=-1){
fos.write(bs, 0, count);
fos.flush();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
if(fis!=null){
try {
fis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(fos!=null){
try {
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
}
}

4.键盘输入一个关键字“千锋”,列出myFiles目录下包含“千锋”关键字的文件


代码:

package Test3;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Scanner; //4.键盘输入一个关键字“千锋”,列出myFiles目录下包含“千锋”关键字的文件(8分)
public class Test4 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("请输入关键字:");
String string=scanner.next(); //读取每个文件内容进行匹配
File file=new File("D:\\myFiles");
FileInputStream fis=null;
File[] files=file.listFiles();
//遍历myFiles下的文件
for (File file2 : files) {
if(file2.isFile()){
// System.out.println(file2);
try {
fis=new FileInputStream(file2);
byte[] bs=new byte[50];
int count=0;
//字符串用于存储文件所有内容
String string2="";
while((count=fis.read(bs))!=-1){
string2+=new String(bs, 0, count);
}
// System.out.println(string2);
//进行匹配
if(string2.contains(string)){
System.out.println(file2+" 包含关键字:"+string);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
if(fis!=null){
try {
fis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
} }
scanner.close(); }
}

5.递归删除myFiles目录,并记录删除的信息,格式为 “INFO1.txt 删除成功(失败) 2015-8-10 10:20:30”.将文件保存到D:\log.txt中,(注意:log.txt文件不要提交)

代码:

package Test3;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat; /**
* 递归删除myFiles目录,并记录删除的信息,格式为 “INFO1.txt 删除成功(失败)
* 2015-8-10 10:20:30”.将文件保存到D:\log.txt中,(注意:log.txt文件不要提交)
* @author Administrator
*
*/
public class Test5 {
public static void main(String[] args) {
File file=new File("D:\\myFiles");
//创建log.txt File file2=new File("D:\\log.txt");
if(!file2.exists()){
try {
file2.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} //调用递归删除
remove(file, file2); } //递归删除myfile文件
public static void remove(File file,File txt){
if(file.isFile()){
boolean isSuccess=file.delete();
long l=System.currentTimeMillis();
//时间格式化
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String string=format.format(l);
FileOutputStream fos=null;
try {
fos=new FileOutputStream(txt,true);
String pk=isSuccess?"删除成功":"删除失败";
String string2=file.getName()+pk+" "+string;
System.out.println(string2);
fos.write(string2.getBytes());
fos.flush();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
if(fos!=null){
try {
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}else {
File[] files=file.listFiles();
for (File file2 : files) {
remove(file2,txt);
}
}
}
}

第五题.按要求完成如下功能


【1】创建一明星Star类,属性:star_No(明星编号)、star_Name(明星名字)、star_Masterpieces(明星的成名作)、star_Home(明星祖籍)、star_Marriage(明星婚否)、star_Info(明星信息);封要求所有属性封装,重写toString方法。 (4分)


代码:

Star类

package Test4;

import java.io.Serializable;
import java.text.CollationKey;
import java.text.Collator; /**
* 创建一明星Star类,属性:star_No(明星编号)、star_Name(明星名字)、
* star_Masterpieces(明星的成名作)、star_Home(明星祖籍)、star_Marriage(明星婚否)、
* star_Info(明星信息);封要求所有属性封装,重写toString方法。
* @author Administrator
*
*/
public class Star implements Comparable<Star>,Serializable {
private static final long serialVersionUID = 1L; private int star_No;
private String star_Name;
private String star_Masterpieces;
private String star_Home;
private String star_Marriage;
private String star_Info;
public int getStar_No() {
return star_No;
}
public void setStar_No(int star_No) {
this.star_No = star_No;
}
public String getStar_Name() {
return star_Name;
}
public void setStar_Name(String star_Name) {
this.star_Name = star_Name;
}
public String getStar_Masterpieces() {
return star_Masterpieces;
}
public void setStar_Masterpieces(String star_Masterpieces) {
this.star_Masterpieces = star_Masterpieces;
}
public String getStar_Home() {
return star_Home;
}
public void setStar_Home(String star_Home) {
this.star_Home = star_Home;
}
public String getStar_Marriage() {
return star_Marriage;
}
public void setStar_Marriage(String star_Marriage) {
this.star_Marriage = star_Marriage;
}
public String getStar_Info() {
return star_Info;
}
public void setStar_Info(String star_Info) {
this.star_Info = star_Info;
}
@Override
public String toString() {
return "Star [star_No=" + star_No + ", star_Name=" + star_Name + ", star_Masterpieces=" + star_Masterpieces
+ ", star_Home=" + star_Home + ", star_Marriage=" + star_Marriage + ", star_Info=" + star_Info + "]";
}
public Star(int star_No, String star_Name, String star_Masterpieces, String star_Home, String star_Marriage,
String star_Info) {
super();
this.star_No = star_No;
this.star_Name = star_Name;
this.star_Masterpieces = star_Masterpieces;
this.star_Home = star_Home;
this.star_Marriage = star_Marriage;
this.star_Info = star_Info;
}
public Star() {
super();
} //要求按照第一条件star_No明星编号升序排列,第二条件start_Name 降序排序
@Override
public int compareTo(Star o) {
if(this.star_No>o.star_No){
return 1;
}else if(this.star_No<o.star_No){
return -1;
}else {
CollationKey key=Collator.getInstance().getCollationKey(this.star_Name);
CollationKey key2=Collator.getInstance().getCollationKey(o.star_Name);
int num=key.compareTo(key2);
if(num>0){
return -1;
}else if(num<0){
return 1;
}else {
return 0;
}
}
}
// (要求:明星编号和明星姓名和明星成名作相同的为同一明星) @Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((star_Home == null) ? 0 : star_Home.hashCode());
result = prime * result + ((star_Info == null) ? 0 : star_Info.hashCode());
result = prime * result + ((star_Marriage == null) ? 0 : star_Marriage.hashCode());
result = prime * result + ((star_Masterpieces == null) ? 0 : star_Masterpieces.hashCode());
result = prime * result + ((star_Name == null) ? 0 : star_Name.hashCode());
result = prime * result + star_No;
return result;
} @Override
public boolean equals(Object obj) {
if(obj==null){
return false;
}
if(obj==this){
return true;
}
if(obj instanceof Star){
Star star=(Star) obj;
if(this.star_No==star.star_No&&this.star_Name.equals(star.star_Name)&&
this.star_Masterpieces.equals(star.star_Masterpieces)){
return true;
}
}
return false;
} }

【2】 根据下列提供的信息创建Star对象,将每个字符串中的字段所对应的值设置到对象属性中。

(1)star_No:10000001 star_Name:胡军 star_Masterpieces:天龙八部 star_Marriage:true star_Home:北京市Star_Info:胡军出生在北京的一个艺术世家,属于满族镶黄旗。父亲胡宝善是男中音歌唱家,母亲王亦满是话剧演员,伯父是著名的男高音歌唱家胡松华,2013年,担任北京东城区消防形象大使。

(2)star_No:10000002 star_Name:鹿晗 star_Masterpieces:重返20岁star_Marriage:false star_Home:北京市Star_Info:鹿晗(LU HAN),中国男演员、歌手。1990年4月20日出生于北京。2008年赴韩国留学期间在明洞逛街时被韩国SM娱乐公司星探发掘,签约成为旗下练习生。2012年4月以EXO组合主唱、领舞、门面担当身份正式出道,在中外各国迅速获得超高人气。

(3)star_No:10000011 star_Name:孙俪 star_Masterpieces:后宫甄嬛传star_Marriage:true star_Home:上海市 Star_Info:孙俪,本名孙丽,1982年9月26日出生于上海市,中国大陆女演员、歌手。5岁开始学舞蹈,11岁出访国外表演,15岁担任上海警备区文工团文艺兵3年;退伍后进入东方文化学院学习。

(4)star_No:10000101 star_Name:王宝强 star_Masterpieces:天下无贼 star_Marriage:true star_Home:河北省邢台市南和县Star_Info:王宝强,中国内地男演员,1984年5月29日出生于河北省邢台市,6岁时开始练习武术,8岁在嵩山少林寺做俗家弟子,20岁时主演独立电影《盲井》获金马奖最佳新人奖及法国、泰国电影节最佳男主角奖。


【3】创建用于存放明星对象的TreeMap<Star,String>,用于存放上述的几个明星,使用自然排序进行排序,
要求按照第一条件star_No明星编号升序排列,第二条件start_Name 降序排序(5分)

【4】使用HashMap<Star,String>集合进行存储,将Star对象作为键,value值为与该明星有关的作品名。
并遍历输出集合元素(要求:明星编号和明星姓名和明星成名作相同的为同一明星)。(5分)

【5】 要求在上题遍历集合时,要求编程实现在当前项目中,
根据获取的每个具体对象的star_Name为名称创建相应文件,将明星对象进行序列化保存

后面4小问的参考代码如下:

代码:

package Test4;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.HashMap;
import java.util.Set;
import java.util.TreeMap; public class Test1 {
public static void main(String[] args) { //2根据下列提供的信息创建Star对象,将每个字符串中的字段所对应的值设置到对象属性中。
Star star=new Star(10000001, "胡军", "天龙八部", "北京市", "true", "胡军出生在北京的一个艺术世家,属于满族镶黄旗。"
+ "父亲胡宝善是男中音歌唱家,母亲王亦满是话剧演员,伯父是著名的男高音歌唱家胡松华,2013年,担任北京东城区消防形象大使。");
Star star2=new Star(10000002, "鹿晗", "重返20岁", "北京市", "false",
"鹿晗(LU HAN),中国男演员、歌手。1990年4月20日出生于北京。2008年赴韩国留学期间在明洞逛街时被韩国SM娱乐公司星探发掘,签约成为旗下练习生。2012年4月以EXO组合主唱、领舞、门面担当身份正式出道,在中外各国迅速获得超高人气。");
Star star3=new Star(10000011, "孙俪", "后宫甄嬛传", "上海市", "true",
"孙俪,本名孙丽,1982年9月26日出生于上海市,中国大陆女演员、歌手。5岁开始学舞蹈,11岁出访国外表演,15岁担任上海警备区文工团文艺兵3年;退伍后进入东方文化学院学习。");
Star star4=new Star(10000101, "王宝强", "天下无贼", "河北省邢台市南和县", "true",
"王宝强,中国内地男演员,1984年5月29日出生于河北省邢台市,6岁时开始练习武术,8岁在嵩山少林寺做俗家弟子,20岁时主演独立电影《盲井》获金马奖最佳新人奖及法国、泰国电影节最佳男主角奖。"); //3.创建用于存放明星对象的TreeMap<Star,String>,用于存放上述的几个明星,
//使用自然排序进行排序,要求按照第一条件star_No明星编号升序排列,第二条件start_Name 降序排序
//{自然排序处理见Star类}
TreeMap<Star, String> map=new TreeMap<>();
map.put(star, "实力派老演员");
map.put(star2, "偶像派歌手演员");
map.put(star3, "后宫剧大神");
map.put(star4, "草根演员");
Set<Star> set=map.keySet();
for (Star star5 : set) {
System.out.println(star5+" "+map.get(star5));
} //4.使用HashMap<Star,String>集合进行存储,将Star对象作为键,vlaue值为与该明星有关的作品名。
//并遍历输出集合元素(要求:明星编号和明星姓名和明星成名作相同的为同一明星)
//{对hashCode和equals重写见star类}
HashMap<Star, String> map2=new HashMap<>();
map2.put(star, "潜伏");
map2.put(star2, "不知道");
map2.put(star3, "甄嬛传");
map2.put(star4, "士兵突击"); System.out.println(); //5.要求在上题遍历集合时,要求编程实现在当前项目中,
//根据获取的每个具体对象的star_Name为名称创建相应文件,将明星对象进行序列化保存
ObjectOutputStream oos=null;
Set<Star> set2=map.keySet();
for (Star star6 : set2) {
//遍历输出
System.out.println(star6+" "+map.get(star6)); //创建相应的文件,并写入序列化对象
try {
oos=new ObjectOutputStream(new FileOutputStream(new File(star6.getStar_Name()+".txt")));
oos.writeObject(star6);
oos.flush();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
if(oos!=null){
try {
oos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
} }
}

第六大题

写两个线程,一个线程打印1-52,另一个线程答应字母A-Z。打印顺序为12A34B56C……5152Z。通过使用线程之间的通信协调关系。

注:分别给两个对象构造一个对象o,数字每打印两个或字母每打印一个就执行o.wait()。在o.wait()之前不要忘了写o.notify()


参考代码地址:http://blog.csdn.net/baidu_37107022/article/details/71082940

Java阶段性测试--第四五六大题参考代码的更多相关文章

  1. Java阶段性测试--知识点:数组,面向对象,集合、线程,IO流

    #Java基础测试 涉及知识点:数组,面向对象,重载,重写,继承,集合,排序,线程,文件流 一.多项选择题(可能是单选,也可能是多选) 1.下列标识符命名不合法的是(   D  ). A.$_Name ...

  2. Java阶段性测试--第二三大题参考代码

    第二大题: 1.打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于它本身 package Test1; //1.打印出所有的 ...

  3. Java 整体测试重点题 错题积累

    重点题    错题积累 1: 解析: %d:用来设置输出日志的日期和时间 %m:用来输出代码中指定的消息 %n:用来输出一个回车换行符 %l:用来输出日志事件的发生位置 %p:用来输出优先级 %f:用 ...

  4. Android AIDL自动生成Java文件测试

    /******************************************************************************** * Android AIDL自动生成 ...

  5. Java设计模式面试题 01 - 六大原则

    Java设计模式面试题 01 - 六大原则 1. 单一职责原则 Single Responsibility Principle SRP原则 分清职责,接口一定要做到单一职责,方法也要做到,类尽量做到 ...

  6. java面试题汇总(有的题无视即可,没什么实际用途)

    相关概念 面向对象的三个特征 封装,继承,多态,这个应该是人人皆知,有时候也会加上抽象. 多态的好处 允许不同类对象对同一消息做出响应,即同一消息可以根据发送对象的不同而采用多种不同的行为方式(发送消 ...

  7. 20165310_获奖感想与Java阶段性学习总结

    获奖感想与Java阶段性学习总结 一.Learning By Doing ​ 在此之前,其实我并没有想到能够成为小黄杉的第一批成员之一,喜悦之余,也感受到了许多的压力.小黄杉一方面代表了老师对于我这一 ...

  8. java项目测试环境搭建

    java项目测试环境搭建 2019-03-06 13:45:26 木瓜小少年 阅读数 691更多 分类专栏: 测试   版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原 ...

  9. 如何在Java中测试类是否是线程安全的

    通过优锐课的java核心笔记中,我们可以看到关于如何在java中测试类是否线程安全的一些知识点汇总,分享给大家学习参考. 线程安全性测试与典型的单线程测试不同.为了测试一个方法是否是线程安全的,我们需 ...

随机推荐

  1. 【C和指针】笔记1

    数据 基本数据类型 整型家族:包含字符,短整型,整型和长整型 整型相互之间大小规定如下: 长整型至少和整型一样长,而整型至少应该和短整型一样长. short int至少16位,long int至少32 ...

  2. java中创建对象中使用默认构造函数的注意点

    public class Test3 {   private int n;   Test3() {      System.out.println("调用默认构造器");   }  ...

  3. linux性能分析及调优

    第一节:cpu 性能瓶颈 计算机中,cpu是最重要的一个子系统,负责所有计算任务: 基于摩尔定律的发展,cpu是发展最快的一个硬件,所以瓶颈很少出现在cpu上: 我们线上环境的cpu都是多核的,并且基 ...

  4. Arcgis Engine OMD

    在UML 图中有三种类型的类:抽象类(abstract class).组件类(COclass)与普通类(instantiable class). 抽象类:不能创建或实例化,从来没有一个抽象类的实例用于 ...

  5. php代码效率小常识

    1, 尽量不要使用@来进行抑制错误,效率很低 2,能使用单引号时不要使用双引号 3,echo的效率比print要高,同时echo可以输出多个变量 4,使用include,require时候最好使用绝对 ...

  6. 解决NSTimer循环引用Retain Cycle问题

    解决NSTimer循环引用Retain Cycle问题 iOS开发中以下的情况会产生循环引用 block delegate NSTimer 循环引用导致一些对象无法销毁,一定的情况下会对我们横须造成影 ...

  7. 略过 Mysql 5.7的密码策略

    之前从mysql 5.6的时候,mysql 还没有密码策略这个东东,所以我们每个用户的密码都可以随心所欲地设置,什么123 ,abc 这些,甚至你搞个空格,那也是OK的. 而mysql.user 表里 ...

  8. angularjs 自定义filter

    过滤器(filter)-----过滤器的主要用途就是一个格式化数据的小工具,一般用于服务端存储的数据转换为用户界面可以理解的数据 <!DOCTYPE html> <html> ...

  9. Visual Lisp获得网络时间的方法

    (defun c:tt (/ ie-obj) (setq ie-obj (vlax-get-or-create-object "Msxml2.xmlhttp")) ) (vlax- ...

  10. Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace 解决方法

    这个问题是在用到spring时,本地IDE里面跑的很正常,但是打包后在集群上运行时报错. 多方查找资料后确定了问题的根源,由于在依赖中调用了spring的许多包,会存在文件覆盖的情况. 具体是 这三个 ...