Java 7新特性(三) ——更多NIO APIs
JSR 203:NIO 2扩展和实现了在Java 1.4中加入的最初NIO功能。在NIO 2中最明显的新增功能就是文件访问API的全面改进。多数开发者都用过java.io.File,对其存在的众多缺陷自然心中有数:
◆不支持符号链接(symbolic links )
◆不支持简单移动和拷贝操作
◆目录漫游和过滤API非常复杂
◆对文件属性和访问权限的支持非常有限
◆没有查看目录或文件的API
◆有限的错误处理功能
幸运的是,JSR 203不仅改进了以上所有缺点,而且实现了更多功能。这个API从一开始就设计为具备可扩展性,除了支持默认文件系统外,还支持嵌入式文件系统,还具有诸多灵活选项设置,可以实现诸如打开和拷贝文件、系统属性定义等操作。
Listing 2演示了JSR 203是如何被用来实现一些通用操作。Path是这个API的核心;你可以把它看作新建文件。
Listing 2
import java.nio.file.*;
// FileSystems -> FileSystem -> Path
FileSystem fileSystem = FileSystems.getDefault();
Path homeDir = fileSystem.getPath("/Users/lskywalker");
// Shortcut with Paths helper class
Path homeDir = Paths.get("/Users/lskywalker");
Path secrets = homeDir.resolve("secrets.txt");
// Steal secrets
secrets.moveTo(Paths.get("/Users/dvader/secrets.txt"));
除了文件系统API外,JSR 203还实现了许多在第一版NIO中提出的API,提供了对组播的更多支持,提供了在Socket和文件上进行异步I/O操作的API。
相关文档:
在 Java 5 环境中,如果用类A去实现接口B (A implements B),在 Java 5 的平台下,A 实现的方法名前是不能添加 @Override 标记的,否则会报如下图所示的错误提示而无法编译:
{{----}}16172
经过尝试和总结,得出下表。
Version
Java 5
Java 6
超类型是 interface,子类型重写的方法能否添加@Override 标记
否
是
......
关于Java内存分配,很多问题都模模糊糊,不能全面贯通理解。今查阅资料,欲求深入挖掘,彻底理清java内存分配脉络,只因水平有限,没达到预期效果,仅以此文对所研究到之处作以记录,为以后学习提供参考,避免重头再来。
一、Java内存分配
1、 Java有几种存储区域?
* 寄存器
-- 在CP ......
预备知识—程序的内存分配
一个由C/C++编译的程序占用的内存分为以下几个部分
1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 ......
最近看到几篇关于java中操作ftp的文章,所以想写一个总结贴,标记一下,方便以后应用。
首先,我们可以应用java中的ftp库,java中提供了一个ftpclient的类,提供了很多操作ftp的方法。
先上代码,一看便知,很简单,应用时只要传递相应的server,user,password等就行了。
import java.io.IOException;
import sun.net. ......
计算某一月份的最大天数
Calendar time=Calendar.getInstance();
time.clear();
time.set(Calendar.YEAR,year); //year 为 int
time.set(Calendar.MONTH,i-1);//注意,Calendar对象默认一月为0
int day=time.getActualMaximum(Calendar.DAY_OF_MONTH);/ ......