每日记载内容总结26
1.String部分知识:(详细讲解请见http://blog.csdn.net/qianzhiyong111/article/details/6600872)
(1)String , StringBuilder , StringBuffer区别
String 与StringBuilder的区别:StringBuilder的是可变的,这意味着可以在创建以后再作修改。
StringBuilder与StringBuffer的区别: StringBuffer的是同步的,这意味着它是线程安全的,但速度比StringBuilder慢。
(2)为什么为在处理私密信息的时候,选择char [ ]比String好?
String是不可改变的。这意味着一旦String对象被创建,那个地址上的值将保持不变,直到垃圾收集器有空来做自动清理。而使用char[ ]可以(在用完后)明确地修改它的元素。这种一来,私密信息(例如密码)就不会在系统的任何地方出现。
(3)如何快速简单统计某字符在一个字符串中的出现次数?
使用apache公共语言包中的StringUtils:
int n = StringUtils.countMatches("11112222", "1");
System.out.println(n);
(4)如何快速的复制字符串
在Java中,我们可以使用Apache公共语言包(Apache Commons Lang package)中的repeat()。
String str = "abcd";
String repeated = StringUtils.repeat(str,3);
//abcdabcdabcd
(4)split方法可以按照字符串切割
String ss = "aaasearchbbb"; System.out.println(ss.split("search")[1]); //bbb
2.获取map的key值以及对应的value值(map中的重复元素,转化为set输出后,会自动过滤掉重复元素)
Map<String,String> maps = new HashMap<String,String>(); //获取key的集合 Set<String> keySet = maps.keySet(); //遍历key集合,获取value for(String key : keySet) { String value = maps.get(key); }
3.复制文件(包括文件夹)
package testFille; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class TestCopyFile { public static void copy(File sourceFile, File targetFile) { BufferedInputStream bInputStream = null; BufferedOutputStream bOutputStream = null; try { bInputStream = new BufferedInputStream(new FileInputStream( sourceFile)); bOutputStream = new BufferedOutputStream(new FileOutputStream( targetFile)); } catch (FileNotFoundException e) { e.printStackTrace(); } byte[] b = new byte[1024 * 5]; int len; try { while ((len = bInputStream.read(b)) != -1) { bOutputStream.write(b, 0, len); } bOutputStream.flush(); } catch (IOException e) { e.printStackTrace(); } try { bInputStream.close(); bOutputStream.close(); } catch (IOException e) { e.printStackTrace(); } finally { try { bInputStream.close(); bOutputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } public static void copyDir(String sourceFile, String targetFile) { new File(targetFile).mkdirs(); File souFile = new File(sourceFile); if (souFile.isDirectory()) { File[] files = souFile.listFiles(); for (int i = 0; i < files.length; i++) { if (files[i].isFile()) { File tarFile = new File(targetFile + File.separator + files[i].getName()); copy(files[i], tarFile); } else if (files[i].isDirectory()) { String dir1 = sourceFile + "/" + files[i].getName(); String dir2 = targetFile + "/" + files[i].getName(); copyDir(dir1, dir2); } } }else { System.out.println("only file , no directory"); File tarFile = new File(targetFile + File.separator + new File(sourceFile).getName()); copy(new File(sourceFile), tarFile); } } public static void main(String[] args) { copyDir("E://helloworld//user.xml", "E://hhhh//VVV"); } }
4.删除文件夹
public static void del(File f){ if (f.exists() && f.isDirectory()) { if (f.listFiles().length == 0) { f.delete(); } else { File delFile[] = f.listFiles(); int i = f.listFiles().length; for (int j = 0; j < i; j++) { if (delFile[j].isDirectory()) { del(delFile[j]); } delFile[j].delete(); } } } }
5.查找文件夹里面所有文件
public static int flag = 0; public static void fetchAllFiles(File file) { if (file.isDirectory()) { File[] files2 = file.listFiles(); for (int i = 0; i < files2.length; i++) { if (files2[i].isFile()) { flag++ ; System.out.println(files2[i].getAbsolutePath() + "---" + files2[i].getName()); } else { fetchAllFiles(files2[i]); } } } else { System.out.println(file.getAbsolutePath() + "---" + file.getName()); flag++ ; } }