分类目录:Java那些事

以下是与分类 “Java那些事” 相关联的文章

使用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

Java 进行MD5的加密

package util;

import java.security.MessageDigest;

public class Md5Util {

	public final static String MD5(String pwd) {
		
		//用于加密的字符
		char md5String[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
				'A', 'B', 'C', 'D', 'E', 'F' };
		try {
			//使用平台的默认字符集将此 String 编码为 byte序列,并将结果存储到一个新的 byte数组中
			byte[] btInput = pwd.getBytes();
			
			// 获得指定摘要算法的 MessageDigest对象,此处为MD5
			//MessageDigest类为应用程序提供信息摘要算法的功能,如 MD5 或 SHA 算法。
			//信息摘要是安全的单向哈希函数,它接收任意大小的数据,并输出固定长度的哈希值。 
			MessageDigest mdInst = MessageDigest.getInstance("MD5");
			//System.out.println(mdInst);  
			//MD5 Message Digest from SUN, <initialized>
			
			//MessageDigest对象通过使用 update方法处理数据, 使用指定的byte数组更新摘要
			mdInst.update(btInput);
			//System.out.println(mdInst);  
			//MD5 Message Digest from SUN, <in progress>
			
			// 摘要更新之后,通过调用digest()执行哈希计算,获得密文
			byte[] md = mdInst.digest();
			//System.out.println(md);
			
			// 把密文转换成十六进制的字符串形式
			int j = md.length;
			//System.out.println(j);
			char str[] = new char[j * 2];
			int k = 0;
			for (int i = 0; i < j; i++) {   //  i = 0
				byte byte0 = md[i];  //95
				str[k++] = md5String[byte0 >>> 4 & 0xf];    //    5  
				str[k++] = md5String[byte0 & 0xf];   //   F
			}
			//返回经过加密后的字符串
			return new String(str);
			
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}
	public static void main(String[] args) {
		System.out.println(Md5Util.MD5("123456"));
		
	}
}


 

Java那些事 / 2013-11-25

jsp 静态化

import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;

/**
 * 将信息发布为静态页面
 * 
 * @author xchun
 * 
 */

public class Jsp2Html {
	/**
	 * 将信息转化为静态html
	 * 
	 * @param sSourceUrl
	 *            动态信息访问URL
	 * @param sDestDir
	 *            存储为静态文件的目录
	 * @param sHtmlFile
	 *            生成的静态文件名,可以按信息的唯一ID+.html命名
	 * @throws IOException
	 */
	
	public static void convert2Html(String sSourceUrl, String sDestDir,
			String sHtmlFile) throws IOException {
		int HttpResult;
		URL url = new URL(sSourceUrl);
		
		URLConnection urlconn = url.openConnection();
		urlconn.connect();
		HttpURLConnection httpconn = (HttpURLConnection) urlconn;
		HttpResult = httpconn.getResponseCode();
		
		if (HttpResult != HttpURLConnection.HTTP_OK) {
		} else {
			BufferedReader in = new BufferedReader(new InputStreamReader(urlconn.getInputStream(),"UTF-8")); 

			String inputLine;
			if (!sDestDir.endsWith("/"))
				sDestDir += "/";
			OutputStreamWriter fout = new OutputStreamWriter(new FileOutputStream(sDestDir + sHtmlFile),"utf-8"); //设置输出文件的编码。 
			
			while ((inputLine = in.readLine()) != null) {
				fout.write(inputLine);

			}
			in.close();
			fout.close();

		}

	}

	public static void main(String[] args) throws IOException {

		for(int i=1;i<10;i++)
		convert2Html(
				"http://blog.94fzb.com:8080/post/page/"+i,"F:",i+".html");

	}

}
Java那些事 / 2013-11-24

对面向对象的概念还是有些模糊不清额

java 好像没有用过 equals 去比较两个对象的情况 (出了String外)

这个C# 中既然还遇到了。 比较两个时间的内容是不是一致的。 开始用!= 来比较总是false

不晓得咋个一下 想通了。 tostring() 让后再用 equals  还应为C# 应该是实现了这样的方法的。

结果和java 一样。 要用equals 来比较自己去实现。 不晓得C# 可以不可以重写这样方法额。 

搞了今天的 C# 脑壳大的没有话说了。 看来C#以后还是少沾的好呀。。  

equals java好多地方都自己实现 看来有的东西不能含糊呀。 不让抓狂的只是bug了



注意,在重写equals方法时,要注意满足离散数学上的特性
1、自反性   :对任意引用值X,x.equals(x)的返回值一定为true.
2    对称性:   对于任何引用值x,y,当且仅当y.equals(x)返回值为true时,x.equals(y)的返回值一定为true;
3    传递性:如果x.equals(y)=true, y.equals(z)=true,则x.equals(z)=true
4   一致性:如果参与比较的对象没任何改变,则对象比较的结果也不应该有任何改变
5   非空性:任何非空的引用值X,x.equals(null)的返回值一定为false

Java那些事 / 2013-10-29

myeclipse 快捷键

-------------------------------------
MyEclipse 快捷键1(CTRL)
-------------------------------------
Ctrl+1 快速修复
Ctrl+D: 删除当前行 
Ctrl+Q  定位到最后编辑的地方 
Ctrl+L  定位在某行  
Ctrl+O  快速显示 OutLine 
Ctrl+T  快速显示当前类的继承结构 
Ctrl+W  关闭当前Editer 
Ctrl+K  快速定位到下一个 
Ctrl+E 快速显示当前Editer的下拉列表
Ctrl+J  正向增量查找(按下Ctrl+J后,你所输入的每个字母编辑器都提供快速匹配定位到某个单词,如果没有,则在stutes line中显示没有找到了,)    
Ctrl+Z 返回到修改前的状态 
Ctrl+Y 与上面的操作相反
Ctrl+/  注释当前行,再按则取消注释 
Ctrl+D删除当前行。
Ctrl+Q跳到最后一次的编辑处
Ctrl+M切换窗口的大小 
Ctrl+I格式化激活的元素Format Active Elements。
Ctrl+F6切换到下一个Editor
Ctrl+F7切换到下一个Perspective
Ctrl+F8切换到下一个View
------------------------------------------
Java那些事 / 2013-10-28

把一个 sql.date 转换为 util.date的方法

在做这个blog 程序中是 发现了不少的问题。
页面中如果需要 完整的时间格式时 sql.date 无法得到 完整的。 
只能是通过一个 时间或者是日期 。
如果需要全部是需要同时放置2个对象, 于是就想到自己去重新组装一下 。
Java那些事 / 2013-10-24

java 的switch 既然不支持 String类型的

不能打为字符串类型的值。只有可转换int值或枚举常量是允许的


只有可以转换int的排除了  --> boolean 

char 难道是枚举????

看来java中 switch用处还真不太大。

-- 不过在 jdk7.0 后支持了。。

这样也挺不错的, 不过还没有试过。

Java那些事 / 2013-10-15

网站放在bae的感觉

 

把网站放在bae 上速度相当的快额。

看看去

百度提供的siteapp 也挺好用。 

不过用户自己定义的东西太少了。 感觉还是有些难的满足用户的需要。 

Java那些事 / 2013-09-21