用 Java 把一个文件夹下的文件随机分为 x 份 x = 总份数 / n
以下内容由 chatGPT,一次生成而来,强大且高效,直接跑过,记录下,下次直接用
以下内容由 chatGPT,一次生成而来,强大且高效,直接跑过,记录下,下次直接用
才发现这段代码写了好久了,一直没有用上(本来打算用在zrlog-plugin对jar检查使用的,主要用来避免使用Java8开发的插件被扔到Java7上运行的),简单整理下。希望能帮到有类似需求的人。
完善的异常处理有利于程序稳定。不要不停的 catch 异常。 什么是异常??定义: 异常是一个事件,它发生在程序的执行过程中,会破坏程序的正常执行在一个错误发生会在一个方法时,创建一个Exception对象来处理来保证程序能继续执行下去。当异常发生时,JVM会搜索调用栈上的所有方法,若没有找到合适的异常处理方法,JVM将会终止程序,或者是终止当前线程。 try,catch,finally ...
说完了简单的编写一个客户端,服务端程序后。发现MINA还是为开发者省了大量的活,那一起来看看MINA自身是怎样工作呢。 先上张MINA整体工作流程的图 先看下图中提到的接口的大体结构吧 这样可能看着还可能不太明白那还慢慢的通过追溯源码的方式来说明这个图。 public class TcpServer extends IoHandlerAdapter{ public static fin ...
项目中用到对文件解压,压缩。于是自己就编写了一段 import java.io.BufferedInputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;imp ...
一般项目涉及到会员的时候就少不了需要验证码,项目放在Windows 可以正常的运行但是一旦把项目部署到Linux 触及到验证码的方法就会导致tomcat 直接停止运行。
这个问题百度大多答案都是千篇一律的,大多都是用到了awt把项目搞挂了。
对于网页抓取这方面大家都知道百度和google 都是依靠这个起家的. 百度为广大的网名提供了很多便捷的地方.让大家能最快的找到自己的想要的东西.百度做的事情就是聚合互联网的信息资源(当然百度也有自己的信息平台,如百度文库,知道,贴吧这类的产品).那百度是怎样的抓取网站的呢.一般情况百度会有自己的链接库. 根据部分网站友链,外链.或者是网站管理员向百度提交网址的方式抓取网站A的内容. 百度的会根据网站A的情况派出蜘蛛(也有称爬虫的)去抓取网站A的内容.蜘蛛根据情况抓取网站A内容.百度根据自己的算法去组织抓取的内容. 然后你就能在百度中搜索到网站A的内容了.当然有时候可能不会第一页的. 这个就是百度核心了. 如何让用户第一时间找到自己想要的内容.
最近在 学习了socket 发现socket果然是个好东西. 仔细的去了解发现用途真的太多.通过scoket编写的东西能很好的做到各种兼容性.比如大家孰知的HTTP 协议了.sokcet通过一些同行协议就能就完成了HTTP . 想想就感觉好厉害呀.
HTTP 这样强大的协议也不是在任何情况都是很有效的.如HTTP 需要实现长链接就显得有些力不从心了.HTTP 适合BS下的应用需要什么数据就从服务器请求什么数据.如果想要服务器主动找客户端的话就不是那样容易了.HTTP 基于请求的特点就无法完成服务端一主动找客户端(浏览器)
人难免会忘记 。 有时候少打个: 也要纠结半天
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 是个好东西。
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); }
外面递归移动或者拷贝文件的方法就不演示了。