第一题:
在c盘有一个文件index.htm
内有类似 这样的 url : <a href="http://127.0.0.1:8080/">
请写一个函数, 该函数实现这样的功能:
1 将文件index.html 复制到 d盘
2 复制后的文件中,10.10.10.15:8080 这样的内容,可以在复制的过程中指定,用别的ip代换
3 尽可能将该函数写的人性化
public class Test2 {
public static void main(String[] args) throws IOException {
copyAndReplace("127.0.0.1:8080","192.168.1.1:9999");
}
static void copyAndReplace(String s1,String s2) throws IOException {
//输入
BufferedReader br= new BufferedReader( new FileReader("c:/index.htm"));
//输出
BufferedWriter bw=new BufferedWriter(new FileWriter("d:/index_copy.htm"));
String str=null;
while((str=br.readLine())!=null) {
bw.write(str.replace(s1, s2));
bw.newLine();
bw.flush();
}
br.close();
bw.close();
}
}
第二题:
编写程序,将一个视频文件,切割成指定大小的文件块
public static void main(String[] args) throws IOException {
cut("C:\\Users\\Administrator\\Desktop\\java99\\Lesson23文件\\File类常用操作.wmv");
System.out.println("ok");
}
static void cut(String fileName) throws IOException {
InputStream in =new FileInputStream(fileName);
byte [] buff=new byte[1024*1024];
int len=0;
int count=0;
while((len=in.read(buff))!=-1) {
OutputStream out=new FileOutputStream("c:/cut/File类常用操作_part"+count++);
out.write(buff,0,len);
out.close();
}
in.close();
}
第三题
将上面切割出来的文件,合并成一个文件
static void mergeNew() throws IOException {
//构造输出流,用来存放合并完之后的文件
OutputStream out=new FileOutputStream("c:/aaa.wmv");
for(int i=0;i<=13;i++) {
InputStream in=new FileInputStream("C:/cut/File类常用操作_part"+i);
byte [] buff=new byte[in.available()];
in.read(buff);
out.write(buff);
in.close();
}
out.close();
}
static void merge() throws IOException {
//构造输出流,用来存放合并完之后的文件
OutputStream out=new FileOutputStream("c:/合并完的文件.wmv");
File f=new File("c:/cut");
File [] fileList =f.listFiles();
for(File part:fileList) {
InputStream in=new FileInputStream(part);
byte [] buff=new byte[in.available()];
in.read(buff);
out.write(buff);
in.close();
}
out.close();
}
第四题
配置文件service.txt的内容如下:
#服务名 目的地址 端口号 服务类名 系统名称
HOST localhost 9870 TransferService 后台主机
HIPAY localhost 9870 BJElecToHipayService 应用服务器
一行是一个service的配置,每行5列,列间以空格或tab字符分隔。
#为注释符号,即首字符是#的行为注释
类ServiceInfo如下:
public class ServiceInfo{
private String serviceName;
private String address;
private int port;
private String serviceClassName;
private String description;
//get/set method
}
一个ServiceInfo对象存储一行服务配置信息。
类ServiceInfoManager的接口如下:
public Interface ServiceInfoManager{
public ServiceInfo getServiceInfo(String serviceName);
}
请编写类实现ServiceInfoManager接口,该类能自动读取service.txt配置文件生成ServiceInfo对象,并对外提供最快的按serviceName检索ServiceInfo的功能。
public interface ServiceInfoManager {
public ServiceInfo getServiceInfo(String serviceName);
public interface ServiceInfoManager {
ServiceInfo getServiceInfo(String serviceName);
}
public class ServiceInfoManagerImpl implements ServiceInfoManager {
public ServiceInfo getServiceInfo(String serviceName) {
ServiceInfo info=null;
BufferedReader br=null;
try {
br=new BufferedReader(new FileReader("src/service.txt"));
br.readLine(); //跳过注释那行
String str=null;
while((str=br.readLine())!=null) {
String [] lineData= str.split("\t");
if(lineData[0].equals(serviceName)) {
info=new ServiceInfo();
info.setServiceName(lineData[0]);
info.setAddress(lineData[1]);
info.setPort(Integer.parseInt( lineData[2]));
info.setServiceClassName(lineData[3]);
info.setDescription(lineData[4]);
break;
}
}
}
catch(Exception ex) {
ex.printStackTrace();
}
finally {
if(br!=null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return info;
}
}
public class Test {
public static void main(String[] args) {
ServiceInfoManager manager=new ServiceInfoManagerImpl();
System.out.println("请输入要查找到服务名:");
Scanner scan =new Scanner(System.in);
String name=scan.next();
ServiceInfo info =manager.getServiceInfo(name);
System.out.println(info);
}
}