Collections工具类:
Collections.sort静态方法,对List集合,进行升序排列
Collections.binarySearch(list,元素)
Collections.shuffle(list)
File类创建文件方法
createNewFile()创建文件,如果已经存在就返回false
mkdir()创建文件夹
File file =new File("c:\\abc");
boolean b = file.mkdir();
System.out.println(b);
mkdirs()创建多级目录
delete()删除的文件或者是文件夹,在File构造方法中给出,删除方法不走回收站,直接从硬盘中删除
File类的获取功能,getName()返回路劲中表示的文件或者文件名
File file = new File("d:\\eclipseJavaEE\\eclipse\\eclipse.exe");
String name = file.getName();
System.out.println(name);
获取路劲中最后一个的名字,要么是文件名要么是文件
File类获取功能,long length()返回路径中表示的文件的字节数
getAbsolutePath()返回String对象
getAbsoluteFile()返回File对象
File file = new File("src");
File absolute = file.getAbsoluteFile();
System.out.println(absolute);
如果写的是一个相对路径,那么找的是绝对位置工程根目录
getParentFile():
File file = new File("d:\\eclipse\\eclipse.exe");
File parent = file.getParentFile().getParentFile().getParentFile();
System.out.println(parent);
exists()判断file构造方法中封装的路径是否存在
File file = new File("src");
boolean b = file.exists();
System.out.println(b);
返回true
boolean isDirectory():判断是否是目录
File file = new File("d:\\eclipseJavaEE\\eclipse.exe");
if(file.exists()){
boolean b = file.isDirectory();
System.out.println(b);
}
file类的获取功能:
String[] list():获取到File构造方法中的封装的路径中的文件和文件夹名(遍历一个目录)
File file = new File("f:");
String[] strArr = file.list();
System.out.println(strArr.length);
for(String str:strArr){
System.out.println(str);
}
listFiles():返回目录或者文件的全路径
listRoots():返回根目录盘符
文件过滤器:
使用listFiles(FileFilter filter)
递归求和:
public static int getSum(int n){
if(n==1){
return 1;
}
return n+getSum(n-1)
}
递归求阶乘:
public static int getJieCheng(int n){
if(n==1){
return 1;
}
return n*getJieCheng(n-1);
}
斐波那契数列:
public static int getFBNQ(int month){
if(month ==1){
return 1;
}
if(month==2){
return 1;
}
return getFBNQ(month-1)+getFBNQ(month-2);
}
获取文件夹下所有以".java"为后缀的文件
test.java
public static void main(String[] args) {
File pathname = new File("c:\\demo");
getAllDir(pathname);
}
public static void getAllDir(File dir){
// System.out.println(dir);
File[] f = dir.listFiles(new testFilter());
for(File files:f){
if(files.isDirectory()){
getAllDir(files);
}else {
System.out.println(files);
}
}
}
testFilter.java
public class testFilter implements FileFilter {
public boolean accept(File pathname){
if(pathname.isDirectory()){
return true;
}else{
return pathname.getName().toLowerCase().endsWith(".java");
}
}
}
字节输出流:
OutputStream()
字节输入流:
InputStream()
使用InputStream()读取文件内容
FileInputStream fis = new FileInputStream("c:\\1.txt");
byte[] b = new byte[1024];
int len = 0;
while((len=fis.read(b))!=-1){
System.out.print(new String(b,0,len));
}
fis.close();
文件复制:
FileInputStream fis = null;
FileOutputStream fos = null;
try {
fis = new FileInputStream("c:\\1.txt");
fos = new FileOutputStream("d:\\a.txt");
int len = 0;
while((len=fis.read())!=-1){
fos.write(len);
}
} catch (IOException ex) {
System.out.println(ex);
throw new RuntimeException("文件复制失败");
}finally {
try {
if(fos!=null)
fos.close();
} catch (IOException ex) {
throw new RuntimeException("释放资源失败");
}finally {
try {
if(fis!=null)
fis.close();
} catch (IOException e) {
throw new RuntimeException("释放资源失败");
}
}
上面的复制速度非常慢,为了提高效率我们采用数组缓冲的方法
FileInputStream fis = null;
FileOutputStream fos = null;
try{
fis = new FileInputStream("c:\\t.zip");
fos = new FileOutputStream("d:\\t.zip");
//定义字节数组,缓冲
byte[] bytes = new byte[1024];
//读取数组,写入数组
int len = 0;
while((len=fis.read())!=-1){
fos.write(bytes,0,len);
}
}catch(IOException ex){
System.out.println(ex);
throw new RuntimeException("文件复制失败");
}finally{
try{
if(fos!=null)
fos.close();
}catch(IOException ex){
throw new RuntimeException("释放资源失败");
}finally{
try{
if(fis!=null)
fis.close();
}catch(IOException ex){
throw new RuntimeException("释放资源失败");
}
}
}
字符输出流写文本FileWriter类
写的方法write
write(int c)写一个字符
write(char[] c)写字符数组
write(char[] c,int,int)写入字符数组一部分,包含开始索引和写几个
write(String s)写入字符串
Writer类的子类对象FileWriter
Reader类:专门读取文本文件
read()读取一个字符
read(char[] c)读取字符数组
由于Reader类是抽象类,需要使用子类FileReader类
字符流复制文本文件,必须文本文件
FileReader读取数据源
FileWriter写入到数据目的
FileReader fr = null;
FileWriter fw = null;
try{
fr = new FileReader("c:\\1.txt");
fw = new FileWriter("d:\\1.txt");
char[] cbuf = new char[1024];
int len=0;
while ((len=fr.read(cbuf))!=-1) {
fw.write(cbuf,0,len);
fw.flush();
}
}catch(IOException ex){
System.out.println(ex);
throw new RuntimeException("复制失败");
}finally{
try{
if(fw!=null)
fw.close();
}catch(IOException ex){
throw new RuntimeException("释放资源失败");
}finally{
try{
if(fr!=null)
fr.close();
}catch(IOException ex){
throw new RuntimeException("释放资源失败");
}
}
}