您的位置:首页 > 运维架构 > Linux

Y450的Linux之路【01-1】——安装系统、显卡(安装第一天,持续更新)

2014-10-23 14:45 357 查看
1、用递归复制文件目录
public void copyFiles(String fromPath, String toPath){
File fromFile = new File(fromPath);
if (fromFile.isDirectory()){
File toFile = new File(toPath);
if(!toFile.exists()) {
System.out.println("正在创建文件夹:" + toFile.getName());
toFile.mkdir();
}
File[] files = fromFile.listFiles();
for(File f : files){
copyFile(f.getAbsolutePath(), toPath+ "/" + f.getName());
}
} else {
System.out.println("正在复制文件:" + frompath);
copy(fromPath, toPath);
}
}

/**
* 复制单个文件
* @param fromPath
* @param toPath
*/
private void copy(String fromPath, String toPath){
try{
// 建立一个输入流
DataInputStream in = new DataInputStream(
BufferedInputStream(
FileInputStream(fromPath)));
byte[] data = new byte[in.available()];
in.read(data);
// 建立一个输出流
DataOutputStream out = new DataOutputStream(
BufferedOutputStream(
FileOutputStream(toPath)));
out.write(data);
// 关闭输入输出流
out.close();
in.close();
} catch(Exception e){
e.printStackTrace();
}
}


2、try{}语句块有return语句,在try{}后面有finally{}code,该code是否会执行,什么情况下执行?
我们先看个例子吧
import java.math.BigDecimal;

public class TryCatchTest {
public static void main(String[] args){
try {
System.out.println("运行try{}代码块");
new BigDecimal("a");
return;
} catch(Exception e) {
e.printStackTrace();
System.out.println("运行到catch代码块了");
} finally {
System.out.println("运行到finally代码块了");
}
System.out.println("运行try finally外代码");
}
}

运行的结果为
运行try{}代码块
java.lang.NumberFormatException
at java.math.BigDecimal.<init>(Unknown Source)
at java.math.BigDecimal.<init>(Unknown Source)
at hxq.study.test.TryCatchTest.main(TryCatchTest.java:9)
运行到catch代码块了
运行到finally代码块了
运行try finally外代码

从中可以看出,code还是有可能被执行的,当try中捕捉的异常时code就会执行,而且finally{}代码块始终都会执行

3、归并排序算法实现
import java.util.ArrayList;
import java.util.Iterator;

public class MergerSortor {

public void sort(ArrayList<Integer> list){
if(list == null) return;
if(list.size() <= 1) return;

ArrayList<Integer> l1 = new ArrayList<Integer>();
ArrayList<Integer> l2 = new ArrayList<Integer>();
Iterator<Integer> it = list.iterator();
while(it.hasNext()){
l1.add(it.next());
if (it.hasNext()) l2.add(it.next());
}
sort(l1);
sort(l2);
// 归并
list.clear();
merger(list, l1, l2);
}

/**
* 将l1,l2归并到list中
* @param list
* @param l1
* @param l1
*/
private void merger(ArrayList<Integer> list, ArrayList<Integer> l1, ArrayList<Integer> l2){
while (!l1.isEmpty() || !l2.isEmpty()) {
if (l1.isEmpty()){
list.add(l2.get(0));
l2.remove(0);
} else if (l2.isEmpty()) {
list.add(l1.get(0));
l1.remove(0);
} else {
Integer int1 = l1.get(0);
Integer int2 = l2.get(0);
if (int1 < int2) {
list.add(int1);
l1.remove(0);
} else {
list.add(int2);
l2.remove(0);
}
}
}
}

public static void main(String[] args){
MergerSortor sortor = new MergerSortor();
ArrayList<Integer> list = new ArrayList<Integer>();
// 随机生成20个100内的整数
int i = 20;
while (i > 0) {
int a = (int)Math.round(Math.random() * 100);
list.add(a);
i --;
}

System.out.println("排序前:" + list);
sortor.sort(list);
System.out.println("排序后:" + list);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: