存档目录:2013_12

以下是与存档 “2013_12” 相关联的文章

按所有的文件夹在前的方式进行排序 - 处理java中使用遍历的文件下的内容

前几天遇到了这个问题。 发现遍历的文件夹和文件排列的顺序是乱的(按时间排序的)

于是想到了要自己去实现排序。 于是就在网上早了下代码。发现可以通过 Collections.sort

于是就想到了使用自己去重写 compare来实现排序。

下面是排序的代码。。

 

	public static void mysort(List<Files> files){
		Collections.sort(files, new Comparator<Files>()
		{
			public int compare(Files o1, Files o2) {
			
				//如果传进来的2个文件o1为文件夹 o2 不是文件时需要改变顺序
				if(o1.isFiler() && !o2.isFiler())
					return -1;
				//返回值>=0,则不调用Arrays.swap(Object x[], int a, int b) 方法。
				if(!o1.isFiler() && o2.isFiler())
		    	    return 1;
				return 0;
			}
		});
	}

 

Java那些事 / 2013-12-23

总结下几个数据库桥接 JDBC的URL

人难免会忘记 。 有时候少打个: 也要纠结半天

 

mysql --> jdbc:mysql://localhost:3306/blog[?useUnicode=true&characterEncoding=UTF-8&user=blog&password=xxxxx]  ?useUnicode=true&characterEncoding=UTF-8 可以避免一些应为mysql 安装时没有设置编码 带来的问题。  就这个有点想个网址 其他 oracle 的: sqlserver的 ; 还真给带来不少的疑惑

sql server --> jdbc:sqlserver://localhost:1433;databasename=jblog

 

sqlite --> jdbc:sqlite:/E:/1.db

 

oracle --> jdbc:oracle:thin:@localhost:1521:orcl

 

目前 接触过这4个数据库。

 

JDBC 是个好东西。

Java那些事 / 2013-12-16

使用inputsteam 处理byte问题

byte b[] = new byte[1] ;

这个可以避免文件经过处理后文件变大的问题。 但是处理大文件时显得就相当吃力了。

于是new byte[1] 不是一个好的选择。

byte b[]=new byte[new File("E:/1.iso").length];

这个可以提高速度。 但是带来又一个问题就是。 这个一次性把文件写到缓存区。 对与小文件没有问题。 但是大文件。 恐怕就........

于是就想到了。我有针对的出来最后一次流的大小不就行了。

 

贴代码开始

public static void moveOrCopyFile(String src,String tag,boolean isMove){
		try {
			long s=System.currentTimeMillis();
			File f=new File(src);
			FileInputStream in=new FileInputStream(src);
			int fileSize=(int) f.length();
			byte b[]=null;
			new File(tag).createNewFile();
			FileOutputStream out=new FileOutputStream(tag);
			int cnt=fileSize/(1024*1024);
			//小于1M(大小根据自己的情况而定)的文件直接一次性写入。 
			if(cnt==0)
			{
				b=new byte[fileSize];
			}
			else
			{
				
				b=new byte[1024*1024];
				// 出来cnt次后 文件 跳出循环 
				while(in.read(b)!=-1)
				{
					out.write(b);
					if(--cnt==0)
					{
						break;
					}
					b=new byte[1024*1024];
				}
				//最后一次流的大小通过取模的方式得到
				b=new byte[fileSize%(1024*1024)];
			}
			//最后一次的文件写入
			in.read(b);
			out.write(b);
			// 一定要记得关闭流额。 不然其他程序那个文件无法进行操作
			in.close();
			out.close();
			System.out.println(System.currentTimeMillis()-s);
			if(isMove)
			{
				f.delete();
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		//System.out.println(src);
		//System.out.println(tag);
	}

 

外面递归移动或者拷贝文件的方法就不演示了。

 

Java那些事 / 2013-12-16