新建 /**
* 新建文件
* @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
阅读全文
1. 考虑用静态工厂方法代替构造器优点:
拥有名称,更容易识别
不必每次调用时,都创建一个新的对象
可以返回返回类型的任何子类型对象
使代码更简洁
缺点:
类如果不含共有的或者受保护的构造器,就不能被子类化。
它们与其他的静态方法实际上没有任何区别。
应用:
服务提供者框架
阅读全文
一个线程的生命周期由三方面组成
创建线程的时间
线程执行的时间
执行销毁的时间
那么只要这三方面中的某一个所需的时间减少,就能够提高程序的性能而线程池技术就是缩短创建与销毁线程的时间。
阅读全文
反射的概念是指程序可以访问、检测和修改它本身状态或行为的一种能力,通俗来说就是获得自身的信息并能够进行修改。
要弄懂反射就要弄懂Java的类加载器机制。在Java中每个,class文件都有一个对应的Class对象,类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个这个类的java.lang.Class对象,用来封装类在方法区类的对象。通过Class对象我们就可以知道这个Clas文件的所有信息,如字段,方法,构造方法,父类,注释等。
阅读全文