*File类的概述和常用功能
*//File的三种构造方法 File fw=new File("D:\\a\\b.txt"); File fw=new File("D:\\a","b.txt"); File fw=new File(("D:\\a"),"b.txt");
File类的创建和删除功能
package com.itxuexi_01;
import java.io.File;
import java.io.IOException;
/*创建功能
* boolean createNewFile():指定文件不存在时创建文件并返回true,否则返回false
* boolean mkdir():指定文件夹不存在时创建文件夹并返回true,否则返回false
* boolean mkdirs():创建指定文件夹,当文件夹所在的目录不存在,则顺道一块创建了
*
* 删除功能
* boolean delete():删除指定的文件或文件夹,当
* 指定的文件或文件夹存在时删除文件文件夹并返回true
* 注意:删除一个文件夹,这个文件夹下面不能有其他文件和文件夹
* 绝地路径:固定不可改变的路径,以盘符开头
* 相对路径:相对某个参照物,不能以盘符开头
* */
public class FileDmeo_02 {
public static void main(String[] args) throws IOException {
File fw=new File("a.txt"); fw.createNewFile(); File f1=new File("b");
System.out.println(f1.mkdir());
File f2=new File("a\\c");
//System.out.println(f2.mkdirs());
System.out.println(f2.delete());
}
}
判断功能
package com.itxuexi_01;
import java.io.File;
import java.io.IOException;
//判断功能
/*boolean exists():判断文件文件夹是否存在,存在返回TRUE
* boolean isAbsolute():判断file指向的对象是否是绝对路径,是返回true
* boolean isDirectory():判断file指向的对象是否是文件夹
* boolean isFile():判断file指向的对象是否是文件
* boolean isHidden():判断file指向的路径是否有隐藏属性,如果隐藏了则返回true,否则返回false
* */
public class FileDemo_03 {
public static void main(String[] args) throws IOException {
//method1();
//File f1=new File("d:\\a\\b.txt");
//method2();
//method3();
//method4();
File f5=new File("D:\\devlop\\a.txt") ;
f5.createNewFile();
System.out.println(f5.isHidden());
}
private static void method4() {
File f3=new File("a.txt");
System.out.println(f3.isFile());
}
private static void method3() {
File f2=new File("a");
System.out.println(f2.isDirectory());
}
private static void method2() {
File f1=new File("b.txt");
System.out.println(f1.isAbsolute());
}
private static void method1() throws IOException {
File f=new File("b.txt");
f.createNewFile();
System.out.println(f.exists());
}
}
File的获取和修改名字功能
package com.itxuexi_01;
import java.io.File;
import java.io.IOException;
/*file的获取功能
* File getAbsoluteFile():返回一个file对象
* String getAbsolutePath();返回file对象所指向的绝对路径
* String getParent()
* File getParentFile()
* String getName():获取文件和文件夹的名称
* String getPath():返回创建对象所给路径
* long lastModified():最后的修改时间
* long length():返回文件的字节数
*
* 和修改名字功能
* Boolean renameTo(File dest):将当前File对象所指向的路径修改为指定File所指向的路径
*
* 注意:修改的文件路径不能存在,如果存在则修改失败*/
public class FileDemo_04 {
public static void main(String[] args) throws IOException {
//method1();
File f2=new File("a\\b.txt");
System.out.println(f2.getName());
System.out.println(f2.getPath());
System.out.println(f2.lastModified());
System.out.println(f2.length());
File f3=new File("b.txt");
File f4=new File("c.txt");
System.out.println(f3.renameTo(f4));
}
private static void method2() throws IOException {
File f1=new File("b\\a.txt");
f1.mkdirs();
f1.createNewFile();
System.out.println(f1.getParent());
System.out.println(f1.getParentFile());
}
private static void method1() {
File f=new File("d:\\a\\b.txt");
System.out.println(f.getAbsoluteFile());
System.out.println(f.getAbsolutePath());
}
}
File的重要获取功能
package com.itxuexi_02;
import java.io.File;
/*String[]list:返回当前路径下所有的文件和文件夹名称
* 注意:只有指向文件夹的File对象才能调用该方法
* File[] listFiles()
* static File[] listRoots():返回的是所有盘符*/
public class FileDemo {
public static void main(String[] args) {
File f=new File("D:\\devlop\\eclipse-workspace");
//method1(f);
//method3(f);
File[]fl=f.listRoots();
for(File file:fl) {
System.out.println(file);
}
}
private static void method3(File f) {
File[]lf=f.listFiles();
for(File file:lf) {
System.out.println(file);
}
}
private static void method1(File f) {
String[]arr=f.list();
for(int i=0;i<arr.length;i++) {
System.out.println(arr[i]);
}
}
}
package com.itxuexi_02;
import java.io.File;
//需求:输出指定目录下所有的java文件名(包括目录)
public class FileDemo_02 {
public static void main(String[] args) {
File f=new File("src");
//File f=new File("src\\com\\ixuexi_02\\FileDemo.java");
method(f);
}
public static void method(File file) {
if(file.isDirectory()) {
File[]files=file.listFiles();
for(File fl:files) {
if(fl.isFile()) {
if(fl.getName().endsWith(".java")) {
System.out.println(fl.getName());
}
}else if(fl.isDirectory()) {
method(fl);
}
}
}
}
public static void method2(File file) {//不包含子目录
if(file.isDirectory()) {
File[]files=file.listFiles();
for(File fl:files) {
if(fl.isFile()) {
if(fl.getName().endsWith(".java")) {
System.out.println(fl.getName());
}
}
}
}
}
}
package com.itxuexi_02;
import java.io.File;
//需求删除指定的目录(包含子目录)
//删除目录先删除子目录子文件
public class DeleteDmeo {
public static void main(String[] args) {
File f1=new File("c\\d\\a.txt");
File f2=new File("c\\d\\b.txt");
f1.mkdirs();
f2.mkdirs();
File f3=new File("c");
method(f3);
}
public static void method(File file) {
if(file.isDirectory()) {//判断是否是文件夹
File[]files=file.listFiles();//将文件夹下的文件用数组表示
for(File f:files) {
if(f.isFile()) {//判断是否是文件
f.delete();
}else if(f.isDirectory()) {//判断是否是文件夹
method(f);
}
}
}
file.delete();
}
}
IO流分类:
-
流向
-
输入流 读取数据 FileReader Reader
-
输出流 写数据 FileWriter Writer
-
数据流:字节流 字节输入流 读出数据 InputStream
-
字节输出流 写出数据 OutputStream
-
字符流
-
字符输入流 读取数据 Reader
-
字符输出流 写出数据 Writer
字符流复制文本文件
package com.itxuexi_02;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class CopyDemo {
public static void main(String[] args) throws IOException {
FileWriter fw=new FileWriter("copy.java");
FileReader fr=new FileReader("src\\com\\itxuexi_02\\FileDemo_03.java");
//一次读写一个字符
/*int len;
while((len=fr.read())!=-1) {
fw.write(len);
}
fw.close();
fr.close();*/
int len1;
char[]chs=new char[1024];
while((len1=fr.read(chs))!=-1) {
fw.write(chs);
}
fw.close();
fr.close();
}
}
package com.itxuexi_02;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
/*分别使用字符流和字节流复制图片
* 二进制文件只能使用字节流进行复制(图片、视频、音频)
* 文本文件既可以使用字节流和字符流*/
public class InputDemo {
public static void main(String[] args) throws IOException {
//创建字节输入流对象
FileInputStream fis=new FileInputStream("1.PNG");
//创建字节输出流对象
FileOutputStream fio=new FileOutputStream("d:\\1.PNG");
//释放资源
int len;
byte[] bys=new byte[1024];
while((len=fis.read(bys))!=-1) {
fio.write(bys, 0, len);
}
fis.close();
fio.close();
}
}
字节流复制文本文件
package com.itxuexi_03;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
//使用字节流复制文本文件
public class FileCopyDemo {
public static void main(String[] args) throws IOException {
//创建字节流输入对象
FileInputStream fis=new FileInputStream("b\\FileDemo_03.java");
//创建字节流输出对象
FileOutputStream fio=new FileOutputStream("d:\\copy1.java");
//一次读取一个字节
/*
* int by; while((by=fis.read())!=-1) { fio.write(by); }
*/
//一次读写一个字节数组
int len;
byte[]bys=new byte[1024];
while((len=fis.read(bys))!=-1) {
fio.write(bys, 0, len);
}
fis.close();
fio.close();
}
}