1.单例模式
单例模式:始终在内存中创建一个实例;
分为两种:
饿汉式:永远不会出现问题的单例模式;
懒汉式:可能出现问题的一种单例模式;
饿汉式:
1)构造方法私有:保证外界不能直接创建当前类对象;
2)在当前类的成员位置创建当前类实例;
3)提供一个静态的功能,返回值就是当前类本身(需要当前类的实例)
懒汉式:
1)构造方法私有化;
2)在当前成员变量的位置声明变量:数据类型就是当前类(私有的,静态的);
3)提供静态功能,返回值是当前类本身
判断如果当前没有给当前类型变量为null,直接new当前类的实例;如果不为null,就返回当前类的变量
可能出现延时加载或懒加载---出现安全问题
Runtime:当前获取的当前本地运行环境的实例;
public int availableProcessors():获取本地计算机的处理器数量
public Process exec(String command):开启某个软件的进程(参数为字符串命令)
public class RuntimeDemo {
public static void main ( String [ ] args) throws IOException {
Runtime runtime = Runtime . getRuntime ( ) ;
System . out. println ( runtime. availableProcessors ( ) ) ;
Process notepad = runtime. exec ( "notepad" ) ;
System . out. println ( runtime. exec ( "QQ" ) ) ;
System . out. println ( runtime. exec ( "shutdown -s -t 300" ) ) ;
System . out. println ( runtime. exec ( "shutdown -a" ) ) ;
}
}
2.File类
File文件和目录(文件夹)路径名的抽象表示
构造方法:
File(String pathname) : 参数就是指定的路径/如果没有指定路径(默认是在当前项目下)
通过将给定的路径名字符串转换为抽象路径来创建新的FIle实例
File(File parent , String child):从父抽象路径名和子路径名字符串创建新的File实例;
File(String parent, String child): 参数1:父目录地址 参数2; 具体的子文件地址;
成员方法:
public boolean createNewFile() throws IOExcepption:表示创建文件:如果不存在则创建;
public boolean mkdir():创建文件夹,如果不存在,则创建;否则就返回false;
public boolean mkdirs():创建多个文件,如果父目录不存在,则创建;
public boolean delete():删除文件或者文件夹(如果删除文件夹,文件夹必须为空目录);
public boolean renameTo(File dest):重命名,参数传递的修改的File对象;
判断方法:
public boolean canRead()是否可读;
public boolean canWrite()是否可写;
public boolean exists():是否存在;
public boolean isFile():是否是文件;
public boolean isDirectory():是否是文件夹;
public boolean isHidden():是否隐藏;
高级获取功能:
public long length();
public String getName():获取抽象路径 名所表示的文件或者目录的名称;
public File[] listFiles():获取某个目录下的所有的文件以及文件夹的File数组;
public String[] list():获取某个抽象路径名所表示的文件以及目录的字符串数组;
获取D盘下的所有文件夹及文件的名称
public class FileDemo2 {
public static void main ( String [ ] args) {
File file = new File ( "aaa.txt" ) ;
System . out. println ( file. canRead ( ) ) ;
System . out. println ( file. canWrite ( ) ) ;
System . out. println ( file. exists ( ) ) ;
System . out. println ( file. isDirectory ( ) ) ;
System . out. println ( file. isFile ( ) ) ;
System . out. println ( file. isHidden ( ) ) ;
System . out. println ( file. length ( ) ) ;
System . out. println ( file. getName ( ) ) ;
System . out. println ( "------------------------" ) ;
File file2 = new File ( "d://" ) ;
File [ ] fileArray = file2. listFiles ( ) ;
if ( fileArray!= null ) {
for ( File f : fileArray) {
System . out. println ( f. getName ( ) ) ;
}
}
System . out. println ( "----------------------------------" ) ;
String [ ] strArray = file2. list ( ) ;
if ( strArray!= null ) {
for ( String s: strArray) {
System . out. println ( s) ;
}
}
}
}
public class FileDemo {
public static void main ( String [ ] args) throws IOException {
File file = new File ( "D:\\EE_2106\\day25\\code\\a.txt" ) ;
File file2 = new File ( "aaa.txt" ) ;
File file3 = new File ( "D:\\EE_2106\\day25\\code\\demo" ) ;
File file4 = new File ( "aaa\\bbb\\ccc\\ddd" ) ;
System . out. println ( file. createNewFile ( ) ) ;
System . out. println ( file2. createNewFile ( ) ) ;
System . out. println ( file3. mkdir ( ) ) ;
System . out. println ( file4. mkdirs ( ) ) ;
System . out. println ( file3. delete ( ) ) ;
System . out. println ( file. delete ( ) ) ;
File srcFile = new File ( "D:\\EE_2106\\day25\\code\\mv.jpg" ) ;
File destFile = new File ( "高圆圆.jpg" ) ;
System . out. println ( srcFile. renameTo ( destFile) ) ;
}
}
获取D盘下所有的以.jpg结尾的文件
public class FileTest {
public static void main ( String [ ] args) {
File file = new File ( "D://" ) ;
File [ ] fileArray = file. listFiles ( ) ;
if ( fileArray!= null ) {
for ( File f: fileArray) {
if ( f. isFile ( ) ) {
if ( f. getName ( ) . endsWith ( ".jpg" ) ) {
System . out. println ( f. getName ( ) ) ;
}
}
}
}
System . out. println ( "----------------------------------------------" ) ;
File srcFile = new File ( "D://" ) ;
File [ ] files = srcFile. listFiles ( new FilenameFilter ( ) {
@Override
public boolean accept ( File dir, String name) {
File file = new File ( dir, name) ;
return file. isFile ( ) && file. getName ( ) . endsWith ( ".jpg" ) ;
}
} ) ;
if ( files!= null ) {
for ( File f : files) {
System . out. println ( f. getName ( ) ) ;
}
}
}
}
3.递归
方法递归:方法调用方法本身的一种现象,并非是方法嵌套方法;
前提条件:
1)必须有一个成员方法;
2)必须有方法递归的出口条件(结束条件),如果没有出口条件,就是死递归;
3)还存在一定规律
注意事项:构造方法不存在递归
public class DiGuiTest {
public static void main ( String [ ] args) {
File srcFloder = new File ( "d://demo" ) ;
deleteFloder ( srcFloder) ;
}
public static void deleteFloder ( File srcFloder) {
File [ ] fileArray = srcFloder. listFiles ( ) ;
if ( fileArray!= null ) {
for ( File file: fileArray) {
if ( file. isDirectory ( ) ) {
deleteFloder ( file) ;
} else {
if ( file. getName ( ) . endsWith ( ".java" ) ) {
System . out. println ( file. getName ( ) + "------------" + file. delete ( ) ) ;
}
}
}
System . out. println ( srcFloder. getName ( ) + "----" + srcFloder. delete ( ) ) ;
}
}
}
4.IO流
IO流的分类
按流的方向:
输入流和输出流;
按类型分:
字节流和字符流:字节流先出现,后面才有字符流;
再按流的方向划分:
字节输入流:InputStream:表示输入字节流的所有类的超类;
字节输出流:OutputStream:表示字节输出流的所有类的超类
字符输入流:Reader:表示输入字符流的抽象类;
字符输出流:Writer:表示输出字符流的抽象类;
字节输出流:OutputStream抽象类子类进行实例化FileOutputStream:将指定的内容写到文件中
实现步骤:
1)创建文件输出流对象:FileOutputStream(String name):可以指定参数地址,FileOutputStream(File file);
2)写数据:
public void write(int b) throws IOException 写一个字节;
public void write(byte[] bytes) throws IOException 写一个字节数组;
public void write(byte[] bytes,int off,int len) throws IOException:写一部分字节数组;
3)关闭资源;
public class FileOutputStreamDemo {
public static void main ( String [ ] args) throws IOException {
FileOutputStream fos = new FileOutputStream ( "my.txt" ) ;
for ( int x = 0 ; x < 10 ; x ++ ) {
fos. write ( ( "hello" + x) . getBytes ( ) ) ;
fos. write ( "\r\n" . getBytes ( ) ) ;
}
fos. close ( ) ;
}
}
在字节输出流中加入异常处理(捕获异常)
public class FileOutputStreamDemo2 {
public static void main ( String [ ] args) {
method2 ( ) ;
}
private static void method2 ( ) {
FileOutputStream fos = null ;
try {
fos = new FileOutputStream ( "fos2.txt" ) ;
fos. write ( "hello,我来了" . getBytes ( ) ) ;
} catch ( IOException e) {
e. printStackTrace ( ) ;
} finally {
if ( fos!= null ) {
try {
fos. close ( ) ;
} catch ( IOException e) {
e. printStackTrace ( ) ;
}
}
}
}
}