------- android培训、java培训、期待与您交流! ----------
IO流<Input Output>一些知识总结:
IO流用来处理设备之间的数据传输,Java对数据的操作是通过流的方式。
流按照操作数据分为两种:
1:字节流与字符流
字节流的抽象基类是InputStream OutputStream
流按照流向分为:
1:输入流与输出流
字符流的抽象基类是Reader Writer
IO流解决的问题:主要解决的是设备与设备之间的数据传输问题。比如:内存---硬盘 , 硬盘---内存
IO流的应用场景:读取文件,导出报表,上传照片。
那么操作文件,让我们先来了解File<文件类>一些常用方法:
File可以描述一个文件或者文件夹。
一:常用的构造方法:
File(String pathname) 指定一个文件的路径,然后创建一个File对象。
File(File parent, String child) 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
路径问题:绝对路径---文件的具体路径信息,绝对路径一般都是以盘符开头的路径。
相对路径:文件资源相对于程序当前的路径。注意,如果当前程序所在的路径与操作的资源文件不是在同一个盘下,那么不准写相对路径。
. 当前所在的路径。
..上一级路径。
..上一级路径。
二:常用创建方法:
createNewFile() 在指定位置创建一个空文件,成功就返回true,如果已存在就不创建然后返回false
mkdir() 在指定位置创建目录,这只会创建最后一级目录,如果上级目录不存在就抛异常。
mkdirs()在指定位置创建目录,这会创建路径中所有不存在的目录。
renameTo(File dest)重命名文件或文件夹,也可以操作非空的文件夹,文件不同时相当于文件的剪切,剪切时候不能操作非空的文件夹。移动/重命名成功则返回true,失败则返回false。
createNewFile() 在指定位置创建一个空文件,成功就返回true,如果已存在就不创建然后返回false
mkdir() 在指定位置创建目录,这只会创建最后一级目录,如果上级目录不存在就抛异常。
mkdirs()在指定位置创建目录,这会创建路径中所有不存在的目录。
renameTo(File dest)重命名文件或文件夹,也可以操作非空的文件夹,文件不同时相当于文件的剪切,剪切时候不能操作非空的文件夹。移动/重命名成功则返回true,失败则返回false。
public class Demo2 {
public static void main(String[] args) throws IOException {
File file = new File("F:\\a.txt");
//createNewFile() 创建一个文件的对象 的。 如果指定的路径已经存在了该文件,那么该方法不会再创建该文件了,
System.out.println("创建文件成功吗?"+ file.createNewFile());
File dir = new File("F:\\aa\\bb");
// mkdir 创建一个文件夹。如果指定文件夹目录已经存在了,那么不会再创建了。 只能用于创建单级目录。
System.out.println("创建文件夹成功吗?"+ dir.mkdir());
System.out.println("创建文件夹成功吗?"+ dir.mkdirs()); //创建多级目录。
File file2 = new File("F:\\a.txt");
File destFile = new File("F:\\b.txt");
file2.renameTo(destFile);
File file3= new File("F:\\bb");
File destFile2 = new File("E:\\aa");
// renameTo 如果目标文件与源文件是位于同一级目录renameTo的作用是重名名,可以操作文件也可以操作文件夹。
System.out.println("操作成功吗?"+ file2.renameTo(destFile2));
// renameTo 如果目标文件与源文件是位于不同的目录下,那么renameTo的功能就是剪切的功能,但是还可以对剪切的文件进行重命名 。 如果是剪切功能 的时候,不能用于操作文件夹。
三:删除和判断:
删除:
delete()删除文件或一个空文件夹,如果是文件夹且不为空,则不能删除,成功返回true,失败返回false。
deleteOnExit()在虚拟机终止时,请求删除此抽象路径名表示的文件或目录,保证程序异常时创建的临时文件也可以被删除
判断:
exists()文件或文件夹是否存在。
isFile()是否是一个文件,如果不存在,则始终为false。
isDirectory()是否是一个目录,如果不存在,则始终为false。
isHidden()是否是一个隐藏的文件或是否是隐藏的目录。
isAbsolute()测试此抽象路径名是否为绝对路径名。
delete()删除文件或一个空文件夹,如果是文件夹且不为空,则不能删除,成功返回true,失败返回false。
deleteOnExit()在虚拟机终止时,请求删除此抽象路径名表示的文件或目录,保证程序异常时创建的临时文件也可以被删除
判断:
exists()文件或文件夹是否存在。
isFile()是否是一个文件,如果不存在,则始终为false。
isDirectory()是否是一个目录,如果不存在,则始终为false。
isHidden()是否是一个隐藏的文件或是否是隐藏的目录。
isAbsolute()测试此抽象路径名是否为绝对路径名。
public class Demo3 {
public static void main(String[] args) throws Exception {
//删除
File file = new File("F:\\a.txt");
// delete 删除一个文件或者 是文件夹 , 用于删除文件夹的时候,文件夹必须 是一个空的文件夹。
System.out.println("删除成功吗?"+ file.delete());
Thread.sleep(5000);
//删除一个文件或者是文件夹。 jvm退出的时候删除文件。
file.deleteOnExit(); //file.deleteOnExit();
System.out.println("哈哈");
File file2 = new File("..\\..\\a.txt");
//判断File是一个文件对象。
System.out.println("是一个文件吗?"+ file2.isFile());
// isDirectory 判断是否为文件夹。
System.out.println("是文件夹吗?"+ file2.isDirectory());
//isHidden 判断是否为隐藏文件。
System.out.println("是隐藏文件吗?"+ file2.isHidden());
System.out.println("是绝对路吗?"+ file2.isAbsolute());
}
}
四:获取方法:
getName()获取文件或文件夹的名称,不包含上级路径。
getPath()返回绝对路径,可以是相对路径,但是目录要指定
getAbsolutePath()获取文件的绝对路径,与文件是否存在没关系
length()获取文件的大小(字节数),如果文件不存在则返回0L,如果是文件夹也返回0L。
getParent()返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回null。
lastModified()获取最后一次被修改的时间。
getPath()返回绝对路径,可以是相对路径,但是目录要指定
getAbsolutePath()获取文件的绝对路径,与文件是否存在没关系
length()获取文件的大小(字节数),如果文件不存在则返回0L,如果是文件夹也返回0L。
getParent()返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回null。
lastModified()获取最后一次被修改的时间。
public class Demo4 {
public static void main(String[] args) {
File file = new File("F:\\a.txt");
// getName 获取文件名
System.out.println("文件名:"+ file.getName());
System.out.println("绝对路径:" + file.getPath()); // getPath 返回绝对路径,
// getAbsolutePath 返回文件的绝对路, 绝对路径 = 当前路径+ 你创建File对象传入的字符串信息。
System.out.println("绝对路径:"+ file.getAbsolutePath());
System.out.println("文件的大小:"+ file.length()); // length 返回文件 的大小,返回 的是以字节为单位 的。
System.out.println("父级目录路径:"+ file.getParent());
//毫秒转成一个Date,然后再转成一个指定格式 的日期字符串。
Date date = new Date(file.lastModified()); //返回的是一个毫秒数。
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
System.out.println("最后一次的修改时间是:" + dateFormat.format(date));
}
}
五:与文件夹相关的方法:
staic File[] listRoots()列出所有的根目录(Window中就是所有系统的盘符)
list()返回目录下的文件或者目录名,包含隐藏文件。对于文件这样操作会返回null。
listFiles()返回目录下的文件或者目录对象(File类实例),包含隐藏文件。对于文件这样操作会返回null。
list()返回目录下的文件或者目录名,包含隐藏文件。对于文件这样操作会返回null。
listFiles()返回目录下的文件或者目录对象(File类实例),包含隐藏文件。对于文件这样操作会返回null。
import java.io.File;
public class Demo1 {
public static void main(String[] args) {
File dir = new File("I:\\");
listFomatFile(dir);
}
//列出指定目录中所有的子文件名与所有的子目录名,要求目录名与文件名分开列出
public static void listFomatFile(File dir){
File[] files = dir.listFiles();
System.out.println("子文件:");
for(File file : files){
if(file.isFile()){
System.out.println("\t"+ file.getName());
}
}
System.out.println("子目录:");
for(File file : files){
if(file.isDirectory()){
System.out.println("\t"+ file.getName());
}
}
}
}