IO知识点
一、
1.1、流的解释及种类
Java中的“流”都位于java.io包中,称为IO(输入/输出)流,
流的解释为:通过不同输入/输出设备(键盘,内存,显示器,网络等)之间的数据传输抽象表述为“流”
1.2、IO流的种类
IO流有很多种,按照操作数据的不同,可以分为字节流和字符流,按照数据传输方向的不同又可分为输入流和输出流,
程序从输入流中读取数据,向输出流中写入数据。
例如:
若我们想文本文件写文字 输出流 (写入数据)
若我们想读取文本文件的文字 输入流 (读取数据)
1.3、file的定义
就是用来创建文件或者目录的
(1)file的构造方法
File(File parent, String child): //根据一个父File对象和一个子文件[目录]得到File对象
File(String pathname)://根据一个路径得到File对象
File(String parent, String child)://根据一个目录和一个子文件[目录]得到File对象
例1:
package com.FileDmeo;
mport java.io.File;
public class FileDemo1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
File f=new File("E:/a/demo.txt"); //磁盘名不区分小写,java只能识别对象,不能识别字符串
System.out.println(f);
File f1=new File("e:\\b","demo1.txt");
System.out.println(f1);
File f2=new File("e:/c");
File f3=new File(f2,"demo3.txt");
System.out.println(f3);
}
}
上述三个构造方法的作用是一样的,用于创建文件或文件目录(文件夹),windows中只存在文件夹跟文件
(2)file的创建功能
public boolean createNewFile(): 创建文件, 如果存在这样的文件,就不创建了。
public boolean mkdir(): 创建文件夹,如果存在这样的目录,就不创建了
public boolean mkdirs(): 创建文件夹,如果父目录不存在,则帮你创建
例2:
package com.FileDmeo;
import java.io.File;
import java.io.IOException;
public class FileDemo2 {
public static void main(String[] args) throws IOException {
File f3=new File("e:/javahome/c.txt");
boolean mkdir2 = f3.mkdirs(); //创建目录
System.out.println(mkdir2);
File f4=new File("e:/javahome/a.txt");
boolean createNewFile = f4.createNewFile(); //创建文件
System.out.println(createNewFile);
File f5=new File("e:/javahome");
File f6=new File(f5,"b.txt");
boolean createNewFile2 = f6.createNewFile();
System.out.println(createNewFile2);
}
}
(3)file的删除功能
public boolean delete():
注意:
A.如果你创建文件或者目录忘了写盘符路径,那么默认下项目目录路径下
B.Java中的删除是不走回收站的
C.要删除一个目录,请注意该目录内不能包含目录或者文件
例3:
package com.FileDmeo;
import java.io.File;
public class FileDemo3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
File f1=new File("E:/a");
File f2=new File(f1,"a.txt");
System.out.println(f2.delete()); //删除目录下的文件
System.out.println(f1.delete()); //删除目录,如果目录下有文件或者是目录下有目录。则不能删除当前目录
}
}
(4) file的重命名功能(renameTo)
public boolean renameTo(File dest)
如果路径名相同,就是改名
如果路径名不相同,就是改名并剪切
例4:
package com.FileDmeo;
import java.io.File;
import java.io.IOException;
public class FileDemo4 {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
File f4=new File("e:/javahome");
File f5=new File(f4,"a.txt");
boolean renameTo = f5.renameTo(new File(f4,"z.txt"));
System.out.println(renameTo);
}
}
(5)file的判断功能
public boolean isDirectory():判断是否是目录
public boolean isFile():判断是否是文件
public boolean exists():判断是否存在
public boolean canRead():判断是否可读
public boolean canWrite():判断是否可写
public boolean isHidden():判断是否隐藏
(6) file的获取功能
public String getAbsolutePath():获取绝对路径
public String getPath():获取相对路径
public String getName():获取名称
public long length():获取长度,字节数
public long lastModified():获取最后一次的修改的时间,毫秒数
public String[] list():获取指定目录下的所有文件或者目录的名称数组
public File[] listFiles():获取指定目录下的所有文件或者目录的File数组
例5:
package com.fileDemo;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
public class FileDemo2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
File f=new File("E:\\javahome\\c");
File f1=new File(f,"b.txt");
System.out.println(f1.getAbsolutePath());
System.out.println(new File("55").getPath()); //new File("55")是在工程路径下的包名
long lastModified = f1.lastModified(); //获得最后一次修改的时间,值为毫秒值
Date d=new Date(lastModified); //把毫秒值传入Date
String s =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(d); //通过SimpleDateFormat转换成格式
System.out.println(s);
System.out.println(f1.length());
System.out.println(f1.getName());
File f2=new File("E:\\javahome"); //当前目录下查找
String[] list = f2.list(); //获得当前目录下所有的目录或者文件
List<String> asList = Arrays.asList(list); //将数组变为集合,Arrays是操作数组的集合, alist是将数组转换成列表的方法
System.out.println(asList);
File[] listFiles = f.listFiles(); //获得当前目录下所有的目录或者文件
for (File file : listFiles) { //遍历这个目录下的每一个文件或者目录
System.out.println(file.getName()+" "+file.isFile()); //输出名称,判断是否为文件
}
}
}
(7)listFiles的应用
1.判断E盘目录下是否有后缀名为.jpg的文件,如果有,就输出该文件名称
package com.fileDemo;
import java.io.File;
public class FileDmeo3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
File f=new File("E:/"); //把E盘变成File对象
File[] listFiles = f.listFiles(); //获得E盘下的所有目录跟文件
for (File file : listFiles) { //遍历E盘下的所有目录跟文件
if(file.isFile()){ //判断是否为文件
if(file.getName().endsWith(".JPG")){ //判断文件的末尾是不是一 .jpg结尾
System.out.println(file.getName()); //获得文件名
}
}
}
}
}
第二种方法(文件过滤器)
package com.fileDemo;
import java.io.File;
import java.io.FilenameFilter;
public class FileDmeo4 {
public static void main(String[] args) {
// TODO Auto-generated method stub
File f=new File("E:/");
String[] s =f.list(new FilenameFilter() { //创建文件过滤器,定义一个字符串接收
@Override
public boolean accept(File dir, String name) {
// TODO Auto-generated method stub
File f1=new File(dir,name); //创建对象接收
if(f1.isFile()&&f1.getName().endsWith(".JPG")){ //判断条件
return true;
}
return false;
}
});
for (String string : s) { //遍历字符串,输出目录下的文件
System.out.println(string);
}
}
}