Java中把数据的传输称为"流"。Java中的"流"都在Java.io包中,称为io流。
io流有许多种,按照操作数据的不同,可以分为字节流和字符流,按照数据传输方向的不同又可分为输入流和输出流,
程序从输入流中读取数据,向输出流中写入数据。
若我们想文本文件写文字 输出流 (写入数据),只能从中读取数据,而不能向其写入数据。
若我们想读取文本文件的文字 输入流 (读取数据),只能向其写入数据,而不能向其读取数据。
File
File:文件或目录(文件夹) 路径名的抽象表示形式 个人理解:就是用来创建文件或者目录的。
构造方法:
File(File parent, String child): 根据一个父File对象和一个子文件[目录]得到File对象
File(String pathname):根据一个路径得到File对象
File(String parent, String child):根据一个目录和一个子文件[目录]得到File对象
例子:
File f1 = new File("F:\\File练习题\\a.txt");(这里得到的是一个File对象,是根据路径得到的对象并不是说这里就创建了一个文件,其中 \\ 等于windows中的 \ ,或者用 / 代表windows中的 \ )
File f2 = new File("F:/File练习题", "a.txt");
File f3 = new File(f1,"a.txt");
1.创建功能:
public boolean createNewFile():创建文件, 如果存在这样的文件,就不创建了。
public boolean mkdir():创建文件夹,如果存在这样的目录,就不创建了
public boolean mkdirs():创建文件夹,如果父目录不存在,则帮你创建
例如:
File f1 = new File("F:\\File练习题\\a.txt");
try {
System.out.println(f1.createNewFile());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
File f2 = new File("F:\\File练习题\\b.txt");
System.out.println(f2.mkdir());
File f3 = new File("F:\\File练习题\\javaTest\\demo");
f3.mkdirs();
2.删除功能:
public boolean delete():
注意:
A.如果你创建文件或者目录忘了写盘符路径,那么默认下项目目录路径下
B.Java中的删除是不走回收站的
C.要删除一个目录,请注意该目录内不能包含目录或者文件(就是说如果你要删除的那个文件夹(目录)里还有其他文件或文件夹(目录)就不能删除)。
例如:
System.out.println(f4.delete());//删除文件
File f5 = new File("F:\\File练习题");
System.out.println(f5.delete());//File练习题下还有其他文件,所以不能删除
3.重命名功能:
public boolean renameTo(File dest)
如果路径名相同,就是改名
如果路径名不相同,就是改名并剪切
例如:
File f1 = new File("F:\\File练习题\\javaTest");
File f3 = new File("F:\\File练习题");
File f2 = new File(f1,"a.txt");
//重命名
boolean renameTo2 = f2.renameTo(new File(f1,"b.txt"));
System.out.println(renameTo2);
5.判断功能:
public boolean isDirectory():判断是否是目录
File f = new File("E:\\javaTest\\demo");
File f1 = new File(f, "1");
System.out.println(f1.isDirectory());//false
System.out.println(f.isDirectory());//true
public boolean isFile():判断是否是文件
System.out.println(f.isFile());//false
System.out.println(f1.isFile());//true
public boolean exists():判断是否存在
System.out.println(new File("e:\\aa").exists());//false
System.out.println(f1.exists());//true
System.out.println(f.exists());//true
public boolean canRead():判断是否可读
System.out.println(f1.canRead());//true
public boolean canWrite():判断是否可写
System.out.println(f1.canWrite());//false
public boolean isHidden():判断是否隐藏
System.out.println(f1.isHidden());//false
6.获取功能
public String getAbsolutePath():获取绝对路径
File f1 = new File("F:\\File练习题\\javaTest");
File f2 = new File(f1,"b.txt");
System.out.println(f2.getAbsolutePath());
System.out.println(f1.getAbsolutePath());
public String getPath():获取相对路径
System.out.println(f2.getPath());//F:\File练习题\javaTest\b.txt
public String getName():获取名称
System.out.println(f2.getName());//b.txt
public long length():获取长度,字节数
System.out.println(f2.length());
public long lastModified():获取最后一次的修改的时间,毫秒数
f2.lastModified();
public String[] list():获取指定目录下的所有文件或者目录的名称数组
String[] list = f1.list();
System.out.println(Arrays.toString(list));
public File[] listFiles():获取指定目录下的所有文件或者目录的File数组
File[] listFiles = f1.listFiles();
for (File file : listFiles) {
System.out.println(file.getName()+"是否是文件:"+file.isFile());
if(file.isFile()) {
file.delete();
}
}
File 练习题:
判断E盘目录下是否有后缀名为.jpg的文件,如果有,就输出该文件名称
File f = new File("e:/");
File[] listFiles = f.listFiles();
for (File file : listFiles) {
if(file.isFile()){
if(file.getName().endsWith(".jpg")){
System.out.println(file.getName());
}
}
}
文件过滤器:
public String[] list(FilenameFilter filter)
public File[] listFiles(FilenameFilter filter)
还是上面的例子:
String[] list = f1.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
//dir 表示就是指定的目录 name:指定目录下的子目录或者文件的名称
return new File(dir,name).isFile()&& name.endsWith(".jpg");
}
});
System.out.println(Arrays.toString(list));