package jef.tools;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URL;
import java.util.Map;
import java.util.Properties;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import jef.common.log.LogUtil;
import jef.tools.support.JefBase64;
import org.junit.Test;
public class IOUtilsTest extends org.junit.Assert{
public static void main(String[] args) {
String n1 = ".sjfdnsdj";
String n2 = "asdas.yxy.txt";
String n3 = "fsdfs.TXT";
String n4 = "sdfmwsjfldsfds";
FileName f = new FileName(n1);
System.out.println(f.getMain());
System.out.println(f.getExt());
f = new FileName(n2);
f.append("(part2)");
System.out.println(f.getMain());
f = new FileName(n3);
System.out.println(f.getMain());
System.out.println(f.getExt());
f = new FileName(n4);
System.out.println(f.getMain());
System.out.println(f.getExt());
URL u = Thread.currentThread().getContextClassLoader().getResource("");
System.out.println(u);
}
@Test
public void test1() throws IOException {
Map<String, String> o = IOUtils.loadProperties(this.getClass().getResource("/a.properties"),null);
LogUtil.show(o);
System.out.println("===== output =====");
IOUtils.storeProperties(new PrintWriter(System.out), o, true,null,0);
}
@Test
public void test2() throws IOException {
Properties pp=new Properties();
pp.load(this.getClass().getResource("/a.properties").openStream());
LogUtil.show(pp);
}
@Test
public void testExtract() throws IOException {
String s = "yv66vgAAADIA0AcAAgEAMmNvbS9oaWt2aXNpb24vc2VjdXJpdHkvcGF0Y2gvdXRpbC9BRVNFbmNyeXB0b3JVdGlsBwAEAQAQamF2YS9sYW5nL09iamVjdAcABgEALGNvbS9oaWt2aXNpb24vc2VjdXJpdHkvcGF0Y2gvdXRpbC9JSUlJSUlsbElJAQAGbG9nZ2VyAQAaTGphdmEvdXRpbC9sb2dnaW5nL0xvZ2dlcjsBAAlBTEdPUklUSE0BABJMamF2YS9sYW5nL1N0cmluZzsBAA1Db25zdGFudFZhbHVlCAANAQADQUVTAQAHQ0hBUlNFVAgAEAEABXV0Zi04AQAIPGNsaW5pdD4BAAMoKVYBAARDb2RlCAAVAQAEVXRpbAoAFwAZBwAYAQAYamF2YS91dGlsL2xvZ2dpbmcvTG9nZ2VyDAAaABsBAAlnZXRMb2dnZXIBAC4oTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL3V0aWwvbG9nZ2luZy9Mb2dnZXI7CQABAB0MAAcACAEAD0xpbmVOdW1iZXJUYWJsZQEAEkxvY2FsVmFyaWFibGVUYWJsZQEABjxpbml0PgoAAwAiDAAgABIBAAR0aGlzAQA0TGNvbS9oaWt2aXNpb24vc2VjdXJpdHkvcGF0Y2gvdXRpbC9BRVNFbmNyeXB0b3JVdGlsOwEAFWdldERlZmF1bHRFbmNyeXB0U2VlZAEABCgpW0IIACgBABAvU3RyaW5nVXRpbHMudHh0CgAqACwHACsBAA9qYXZhL2xhbmcvQ2xhc3MMAC0ALgEAE2dldFJlc291cmNlQXNTdHJlYW0BACkoTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2lvL0lucHV0U3RyZWFtOwoAMAAyBwAxAQATamF2YS9pby9JbnB1dFN0cmVhbQwAMwA0AQAEcmVhZAEABShbQilJCgAwADYMADMANwEAByhbQklJKUkIADkBACZnZXREZWZhdWx0U2VlZCBmYWlsZWQsIGJlY2F1c2Ugb2Y6WyVzXQoAOwA9BwA8AQATamF2YS9pby9JT0V4Y2VwdGlvbgwAPgA/AQAKZ2V0TWVzc2FnZQEAFCgpTGphdmEvbGFuZy9TdHJpbmc7CgBBAEMHAEIBABBqYXZhL2xhbmcvU3RyaW5nDABEAEUBAAZmb3JtYXQBADkoTGphdmEvbGFuZy9TdHJpbmc7W0xqYXZhL2xhbmcvT2JqZWN0OylMamF2YS9sYW5nL1N0cmluZzsKABcARwwASABJAQAGc2V2ZXJlAQAVKExqYXZhL2xhbmcvU3RyaW5nOylWCgBLAE0HAEwBACljb20vaGlrdmlzaW9uL3NlY3VyaXR5L3BhdGNoL3V0aWwvSU9VdGlscwwATgBPAQAKY2xvc2VRdWlldAEAFihMamF2YS9pby9DbG9zZWFibGU7KVYBAARzZWVkAQACW0IBAAJpcwEAFUxqYXZhL2lvL0lucHV0U3RyZWFtOwEAAWUBABVMamF2YS9pby9JT0V4Y2VwdGlvbjsBAA1TdGFja01hcFRhYmxlBwBRBwBZAQATamF2YS9sYW5nL1Rocm93YWJsZQEABF8kJDEBACYoTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvU3RyaW5nOwoAAQBdDAAlACYKAAEAXwwAYABhAQAHZW5jcnlwdAEAKChMamF2YS9sYW5nL1N0cmluZztbQilMamF2YS9sYW5nL1N0cmluZzsBAAdjb250ZW50CgBkAGYHAGUBABlqYXZheC9jcnlwdG8vS2V5R2VuZXJhdG9yDABnAGgBAAtnZXRJbnN0YW5jZQEALyhMamF2YS9sYW5nL1N0cmluZzspTGphdmF4L2NyeXB0by9LZXlHZW5lcmF0b3I7CABqAQAIU0hBMVBSTkcKAGwAbgcAbQEAGmphdmEvc2VjdXJpdHkvU2VjdXJlUmFuZG9tDABnAG8BADAoTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL3NlY3VyaXR5L1NlY3VyZVJhbmRvbTsKAGwAcQwAcgBzAQAHc2V0U2VlZAEABShbQilWCgBkAHUMAHYAdwEABGluaXQBACAoSUxqYXZhL3NlY3VyaXR5L1NlY3VyZVJhbmRvbTspVgoAZAB5DAB6AHsBAAtnZW5lcmF0ZUtleQEAGigpTGphdmF4L2NyeXB0by9TZWNyZXRLZXk7CwB9AH8HAH4BABZqYXZheC9jcnlwdG8vU2VjcmV0S2V5DACAACYBAApnZXRFbmNvZGVkBwCCAQAfamF2YXgvY3J5cHRvL3NwZWMvU2VjcmV0S2V5U3BlYwoAgQCEDAAgAIUBABcoW0JMamF2YS9sYW5nL1N0cmluZzspVgoAhwCJBwCIAQATamF2YXgvY3J5cHRvL0NpcGhlcgwAZwCKAQApKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YXgvY3J5cHRvL0NpcGhlcjsKAEEAjAwAjQCOAQAIZ2V0Qnl0ZXMBABYoTGphdmEvbGFuZy9TdHJpbmc7KVtCCgCHAJAMAHYAkQEAFyhJTGphdmEvc2VjdXJpdHkvS2V5OylWCgCHAJMMAJQAlQEAB2RvRmluYWwBAAYoW0IpW0IKAEsAlwwAmACZAQAMYnl0ZXMySGV4U3RyAQAWKFtCKUxqYXZhL2xhbmcvU3RyaW5nOwgAmwEAH2VuY3J5cHQgZmFpbGVkLCBiZWNhdXNlIG9mOlslc10KAJ0APQcAngEAJmphdmEvc2VjdXJpdHkvTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uCgCgAD0HAKEBACNqYXZheC9jcnlwdG8vTm9TdWNoUGFkZGluZ0V4Y2VwdGlvbgoAowA9BwCkAQAhamF2YS9zZWN1cml0eS9JbnZhbGlkS2V5RXhjZXB0aW9uCgCmAD0HAKcBACRqYXZhL2lvL1Vuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24KAKkAPQcAqgEAJmphdmF4L2NyeXB0by9JbGxlZ2FsQmxvY2tTaXplRXhjZXB0aW9uCgCsAD0HAK0BACBqYXZheC9jcnlwdG8vQmFkUGFkZGluZ0V4Y2VwdGlvbgEAC2VuY3J5cHRTZWVkAQAEa2dlbgEAG0xqYXZheC9jcnlwdG8vS2V5R2VuZXJhdG9yOwEADHNlY3VyZVJhbmRvbQEAHExqYXZhL3NlY3VyaXR5L1NlY3VyZVJhbmRvbTsBAAlzZWNyZXRLZXkBABhMamF2YXgvY3J5cHRvL1NlY3JldEtleTsBAAxlbkNvZGVGb3JtYXQBAANrZXkBACFMamF2YXgvY3J5cHRvL3NwZWMvU2VjcmV0S2V5U3BlYzsBAAZjaXBoZXIBABVMamF2YXgvY3J5cHRvL0NpcGhlcjsBAAtieXRlQ29udGVudAEABnJlc3VsdAEAKExqYXZhL3NlY3VyaXR5L05vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbjsBACVMamF2YXgvY3J5cHRvL05vU3VjaFBhZGRpbmdFeGNlcHRpb247AQAjTGphdmEvc2VjdXJpdHkvSW52YWxpZEtleUV4Y2VwdGlvbjsBACZMamF2YS9pby9VbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uOwEAKExqYXZheC9jcnlwdG8vSWxsZWdhbEJsb2NrU2l6ZUV4Y2VwdGlvbjsBACJMamF2YXgvY3J5cHRvL0JhZFBhZGRpbmdFeGNlcHRpb247AQAEXyQkMgoAAQDEDADFAGEBAAdkZWNyeXB0AQAFcHRleHQKAEsAyAwAyQCOAQAMaGV4U3RyMkJ5dGVzCgBBAIQIAMwBAB9kZWNyeXB0IGZhaWxlZCwgYmVjYXVzZSBvZjpbJXNdAQALZGVjcnlwdFNlZWQBAApTb3VyY2VGaWxlAQAVQUVTRW5jcnlwdG9yVXRpbC5qYXZhACEAAQADAAEABQADABoABwAIAAAAGgAJAAoAAQALAAAAAgAMABoADgAKAAEACwAAAAIADwAHAAgAEQASAAEAEwAAAC0AAQAAAAAACRIUuAAWswAcsQAAAAIAHgAAAAoAAgAAAB0ACAAbAB8AAAACAAAAAQAgABIAAQATAAAALwABAAEAAAAFKrcAIbEAAAACAB4AAAAGAAEAAAAbAB8AAAAMAAEAAAAFACMAJAAAABAAJQAmAAEAEwAAAPUABgAFAAAAUBEBALwITBIBEie2AClNLCu2AC9XLCsRAIARAIC2ADVXpwAqTrIAHBI4BL0AA1kDLbYAOlO4AEC2AEYsuABKpwAQOgQsuABKGQS/LLgASiuwAAIADgAgACMAOwAOADoAQQAAAAMAHgAAADIADAAAACkABgArAA4ALQAUAC4AIwAvACQAMAA6ADIAQQAxAEMAMgBHADMASgAyAE4ANAAfAAAAKgAEAAAAUAAjACQAAAAGAEoAUABRAAEADgBCAFIAUwACACQAFgBUAFUAAwBWAAAAGwAE/wAjAAMHAAEHAFcHADAAAQcAO10HAFgIAwABAFoAWwABABMAAAA+AAMAAgAAAAoqKyq2AFy2AF6wAAAAAgAeAAAABgABAAAAPQAfAAAAFgACAAAACgAjACQAAAAAAAoAYgAKAAEAAQBgAGEAAQATAAACdgAGAAsAAAD5Egy4AGNOEmm4AGs6BBkELLYAcC0RAIAZBLYAdC22AHg6BRkFuQB8AQA6BrsAgVkZBhIMtwCDOgcSDLgAhjoIKxIPtgCLOgkZCAQZB7YAjxkIGQm2AJI6ChkKuACWsE6yABwSmgS9AANZAy22AJxTuABAtgBGpwCCTrIAHBKaBL0AA1kDLbYAn1O4AEC2AEanAGhOsgAcEpoEvQADWQMttgCiU7gAQLYARqcATk6yABwSmgS9AANZAy22AKVTuABAtgBGpwA0TrIAHBKaBL0AA1kDLbYAqFO4AEC2AEanABpOsgAcEpoEvQADWQMttgCrU7gAQLYARgGwAAYAAABdAF4AnQAAAF0AeACgAAAAXQCSAKMAAABdAKwApgAAAF0AxgCpAAAAXQDgAKwAAwAeAAAAZgAZAAAASQAGAEoADQBLABMATAAcAE0AIgBOACsATwA4AFAAPwBRAEcAUgBPAFMAWABUAF4AVQBfAFYAeABXAHkAWACSAFkAkwBaAKwAWwCtAFwAxgBdAMcAXgDgAF8A4QBgAPcAYgAfAAAArAARAAAA+QAjACQAAAAAAPkAYgAKAAEAAAD5AK4AUQACAAYAWACvALAAAwANAFEAsQCyAAQAIgA8ALMAtAAFACsAMwC1AFEABgA4ACYAtgC3AAcAPwAfALgAuQAIAEcAFwC6AFEACQBYAAYAuwBRAAoAXwAWAFQAvAADAHkAFgBUAL0AAwCTABYAVAC+AAMArQAWAFQAvwADAMcAFgBUAMAAAwDhABYAVADBAAMAVgAAAB0AB/cAXgcAnVkHAKBZBwCjWQcAplkHAKlZBwCsFgABAMIAWwABABMAAAA+AAMAAgAAAAoqKyq2AFy2AMOwAAAAAgAeAAAABgABAAAAawAfAAAAFgACAAAACgAjACQAAAAAAAoAxgAKAAEAAQDFAGEAAQATAAACewAGAAsAAAD+K7gAx04SDLgAYzoEEmm4AGs6BRkFLLYAcBkEEQCAGQW2AHQZBLYAeDoGGQa5AHwBADoHuwCBWRkHEgy3AIM6CBIMuACGOgkZCQUZCLYAjxkJLbYAkjoKuwBBWRkKEg+3AMqwTrIAHBLLBL0AA1kDLbYAnFO4AEC2AEanAIJOsgAcEssEvQADWQMttgCfU7gAQLYARqcAaE6yABwSywS9AANZAy22AKJTuABAtgBGpwBOTrIAHBLLBL0AA1kDLbYAqFO4AEC2AEanADROsgAcEssEvQADWQMttgCrU7gAQLYARqcAGk6yABwSywS9AANZAy22AKVTuABAtgBGAbAABgAAAGIAYwCdAAAAYgB9AKAAAABiAJcAowAAAGIAsQCpAAAAYgDLAKwAAABiAOUApgADAB4AAABmABkAAAB3AAUAeAAMAHkAEwB6ABkAewAjAHwAKgB9ADMAfgBAAH8ARwCAAE8AgQBXAIIAYwCDAGQAhAB9AIUAfgCGAJcAhwCYAIgAsQCJALIAigDLAIsAzACMAOUAjQDmAI4A/ACQAB8AAACsABEAAAD+ACMAJAAAAAAA/gDGAAoAAQAAAP4AzQBRAAIABQBeAGIAUQADAAwAVwCvALAABAATAFAAsQCyAAUAKgA5ALMAtAAGADMAMAC1AFEABwBAACMAtgC3AAgARwAcALgAuQAJAFcADAC7AFEACgBkABYAVAC8AAMAfgAWAFQAvQADAJgAFgBUAL4AAwCyABYAVADAAAMAzAAWAFQAwQADAOYAFgBUAL8AAwBWAAAAHQAH9wBjBwCdWQcAoFkHAKNZBwCpWQcArFkHAKYWAAEAzgAAAAIAzw==";
IOUtils.saveAsFile(new File("c:/temp/aaa.class"), JefBase64.decodeFast(s));
}
@Test
public void testFileNames(){
String[] input=new String[]{
"xml..exe",
"c:\\dsdsds/1.tXt",
"c:\\dsds.ds/1",
"c:\\dsds.ds/1.d\\dsdfs.exe",
"c:\\dsds.ds/1.d\\dsdfs.exe/dom.data.JSON",
"c:\\dsds.ds/1.d\\dsdfs.exe/dom.data.JSON\\noext",
"c:\\dsds.ds/1.d\\dsdfs.exe/dom.data.JSON\\noext."
};
String[] resultGetExt=new String[]{
"exe",
"txt",
"",
"exe",
"json",
"",
""
};
String[] resultRemoveExt=new String[]{
"xml.",
"c:\\dsdsds/1",
"c:\\dsds.ds/1",
"c:\\dsds.ds/1.d\\dsdfs",
"c:\\dsds.ds/1.d\\dsdfs.exe/dom.data",
"c:\\dsds.ds/1.d\\dsdfs.exe/dom.data.JSON\\noext",
"c:\\dsds.ds/1.d\\dsdfs.exe/dom.data.JSON\\noext"
};
for(int i=0;i<input.length;i++){
assertEquals(resultGetExt[i], IOUtils.getExtName(input[i]));
assertEquals(resultRemoveExt[i], IOUtils.removeExt(input[i]));
}
}
@Test
public void testNanoXML() throws ParserConfigurationException {
long time = System.currentTimeMillis();
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
System.out.println((System.currentTimeMillis() - time));
time = System.currentTimeMillis();
DocumentBuilderFactory dbf2 = DocumentBuilderFactory.newInstance();
System.out.println((System.currentTimeMillis() - time));
time = System.currentTimeMillis();
DocumentBuilderFactory dbf3 = DocumentBuilderFactory.newInstance();
System.out.println((System.currentTimeMillis() - time));
time = System.currentTimeMillis();
DocumentBuilder db = dbf.newDocumentBuilder();
System.out.println((System.currentTimeMillis() - time));
time = System.currentTimeMillis();
DocumentBuilder db2 = dbf2.newDocumentBuilder();
System.out.println((System.currentTimeMillis() - time));
time = System.currentTimeMillis();
DocumentBuilder db3 = dbf3.newDocumentBuilder();
System.out.println((System.currentTimeMillis() - time));
time = System.currentTimeMillis();
DocumentBuilder db4 = dbf3.newDocumentBuilder();
System.out.println((System.currentTimeMillis() - time));
}
}