Archive目录:2013_12
以下是与Archive “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;
   }
  });
 }

 

总结下几个数据库桥接 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 是个好东西。

使用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);
 }

 

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