Java基础(二十)

*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();
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值