在jdk1.7之前,java中没有直接的类提供文件复制功能。下面就文件复制,提出几种方案。
jdk1.7中的文件复制
在jdk1.7版本中可以直接使用Files.copy(File srcFile, File destFile)方法即可。
private static void copyFileUsingJava7Files(File source, File dest)
throws IOException {
Files.copy(source.toPath(), dest.toPath());
}
使用FileInputStream复制
more
/**
*
* @Title: copyFileUs
继续阅读 »
Java面试题收集整理
来源:骆昊 链接: blog.csdn.net/jackfrued/article/details/44921941
1、面向对象的特征有哪些方面
面向对象的特征主要有以下几个方面:
继续阅读 »
Java面试总结-线程
1、创建一个线程
创建线程主要分为两个方法
implements Runnable接口并实现run()方法,然后由Runnable对象创建一个Thread对象,调用Tread的start()方法启动线程。
extends Thread 构建一个Thread类的子类,复写run()方法。该方法目前已不再推荐,应该从运行机制上减少需要并行运行的任务数量。
警告:不要调用Thread类或Runnable对象的run方法。直接调用run方法,只会执行同一个线程中的任务,而不会启动新线程??。应该调用Tread.start方法,这个方法将创建一个执行run方法的新线程。
```
/**
* 创建线程的两种方式
继续阅读 »
Java面试题总结(其一)
1、sleep和wait方法的区别
这两个方法来自不同的类分别是Thread和Object
最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。
wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在
任何地方使用
synchronized(x){
x.notify()
//或者wait()
}
sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常
继续阅读 »
```java
public class ProgressBar {
private double finishPoint;
private double barLength;
public ProgressBar(){
this.finishPoint = 100;
this.barLength = 20;
}
public ProgressBar(double finishPoint, int barLength){
this.finishPoint = finishPoint;
this.barLength = barLength;
}
/**
* 显示进度条
* @p
继续阅读 »
去年的一篇文章{:target="_blank"}总结了一下深浅拷贝,Immutable 和 unmodifiable 这三个概念,今天再看看 Java 的深浅拷贝。
继续阅读 »
前奏
因为NIO并不容易掌握,所以这注定会是一篇长文,而且即便篇幅很大,亦难以把很多细节解释清楚,只能侧重于从整体上进行把握,并实现一个简单的客户端服务端消息通信框架作为例子,以便有需要的开发人员参考之。借用淘宝伯岩给出的忠告就是
- 尽量不要尝试实现自己的NIO框架,除非有经验丰富的工程师
- 尽量使用经过广泛实践的开源NIO框架Mina/Netty/xSocket
- 尽量使用最新版稳定版JDK
- 遇到问题的时候,可以先看下Java的Bug Database
Asynchronous I/O是在JDK7中提出的异步非阻塞I/O,习惯上称之为NIO2,也叫AIO,AIO是对JDK1.4中提出的同步非阻塞I/O的进一步增强,主
继续阅读 »
先来看一个例子,代码如下:
java
public class Test {
public static void main(String[] args) {
String str = "abc";
String str1 = "abc";
String str2 = new String("abc");
System.out.println(str == str1);
System.out.println(str1 == "abc");
System.out.println(str2 == "abc
继续阅读 »
在项目中使用的还是java1.7比较多,1.8平时业余项目用用,学习下,毕竟新版本始终会代替旧版本的.在mac上推荐使用jenv工具来管理多java版本,
能够随意切换.
官方网站http://www.jenv.be/{:target="_blank"},还有个是http://jenv.io/{:target="_blank"}
国人开发的算是升级版本把,能够通过该工具安装java,ant,maven,tomact.对于我来说,使用jenv足够了.
继续阅读 »
日志记录在程序开发中是很重要的一个环节,日志在开发、调试、问题定位、问题分析中都起着很重要的作用。
Java生态圈提供了很多日志工具供开发者选择。
more
先明确下另个概念:
日志系统:日志系统是日志的具体实现。Java日志系统比较丰富,常用的有Log4j、java.util.Logging、Logback。
日志框架:为了解决多个日志系统的兼容问题,日志框架应运而生。主流的日志框架有commons-logging和SLF4J。
继续阅读 »