新建 /**
* 新建文件
* @param path 绝对路径
* @return 新建成功返回ture,新建失败或以存在此文件返回false
*/
public static boolean newFile(String path)
{
File file = new File(path);
file.getParentFile().mkdirs();
try
{
return file.createNewFile();
} catch (IOException e)
{
e.printStackTrace();
return false;
}
}
阅读全文
InputStreamReaderpublic class Test
{
public static void main(String[] args) throws IOException
{
InputStreamReader isr = new InputStreamReader(new FileInputStream("E:\\Test11.txt"));
//markSupported() boolean 判断此流是否支持 mark() 操作以及支持哪一项操作。
System.out.println("markSupported():" + isr.markSupported());
//ready() boolean 判断此流是否已经准备好用于读取。
System.out.println("ready():" + isr.ready());
//read() int 读取单个字符。
System.out.println("read():" + isr.read());
char[] chars1 = new char[26];
//read(char[] cbuf) int 将字符读入数组。
isr.read(chars1);
System.out.println("read(char[] cbuf):" + new String(chars1));
char[] chars2 = new char[26];
//read(char[] cbuf, int off, int len) int 将字符读入数组的某一部分。
isr.read(chars2, 0, 13);
System.out.println("read(char[] cbuf, int off, int len):" + new String(chars2));
//skip(long ns) long 将该流重置为最新的标记,如果从未标记过,则将其重置到该字符串的开头。
isr.skip(1);
//close() void 关闭该流并释放与之关联的所有系统资源。
isr.close();
}
}
阅读全文
ByteArrayInputStreampublic class Test
{
public static void main(String[] args) throws IOException
{
byte[] bytes1 = new byte[52];
for(int i = 0;i < bytes1.length;i++)
{
bytes1[i] = (byte) ('a' + i%26);
}
ByteArrayInputStream bais1 = new ByteArrayInputStream(bytes1);
//skip(long n) long 从此输入流中跳过 n 个输入字节。
System.out.println("skip(long n):" + bais1.skip(256));
//available() int 返回可从此输入流读取(或跳过)的剩余字节数。
System.out.println("available():" + bais1.available());
//markSupported() boolean 测试此 InputStream 是否支持 mark/reset。
System.out.println("markSupported():" + bais1.markSupported());
//mark(int readAheadLimit) void 设置流中的当前标记位置。
bais1.mark(512);
//read() int 从此输入流中读取下一个数据字节。
System.out.println("read():" + bais1.read());
byte[] bytes2 = new byte[512];
//read(byte[] int 从此输入流中将最多 b.length 个字节的数据读入一个 byte 数组中。
System.out.println("read(byte[]):" + bais1.read(bytes2));
System.out.println(new String(bytes2));
//read(byte[] b, int off, int len) int 将最多 len 个数据字节从此输入流读入 byte 数组。
System.out.println("read(byte[] b, int off, int len):" + bais1.read(bytes2, 0, 128));
System.out.println(new String(bytes2));
//reset() void 将缓冲区的位置重置为标记位置。
bais1.reset();
System.out.println("reset():" + bais1.available());
//close() void 关闭 ByteArrayInputStream
bais1.close();
}
}
阅读全文
概述URI(uniform resource identifier)统一资源标识符URL(uniform resource locator)统一资源定位器
URL是URI的一种,不仅标识了Web 资源,还指定了操作或者获取方式,同时指出了主要访问机制和网络位置
●在Java类库中,URI类不包含任何访问资源的方法,它唯一的作用就是解析。相反的是,URL类可以打开一个到达资源的流。因此URL类只能作用于那些 Java类库知道该如何处理的模式,例如http:,https:,ftp:,本地文件系统(file:),和Jar文件(jar:)。
阅读全文
概述FileFilter和FilenameFilter都是文件过滤器,都是一个接口,只有方法accept(),accept返回true表示符合所需文件标准,要过滤掉的文件则返回false
阅读全文
简单工厂(Simple Factory)
定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。因为在简单工厂模式中用于创建实例的方法是静态(static)方法,因此简单工厂模式又被称为静态工厂方法(Static Factory Method)模式
一般性结构
工厂角色:担任这个角色的是工厂方法模式的核心,含有与应用紧密相关的商业逻辑。工厂类在客户端的直接调用下创建产品对象,它往往由一个具体的Java类实现
抽象产品:担任这个角色的类是由工厂模式所创建的对象的父类,或它们共同拥有的接口。抽象产品角色可以用一个Java接口或者Java抽象类实现
具体产品:工厂模式所创建的任何对象都是这个角色的实例,具体产品角色由一个具体Java类实现。
阅读全文
1. 考虑用静态工厂方法代替构造器优点:
拥有名称,更容易识别
不必每次调用时,都创建一个新的对象
可以返回返回类型的任何子类型对象
使代码更简洁
缺点:
类如果不含共有的或者受保护的构造器,就不能被子类化。
它们与其他的静态方法实际上没有任何区别。
应用:
服务提供者框架
阅读全文