File和IO

File类

File类的常用方法

java.io.File类的对象代表一个文件或者目录,File类提供了对文件或目录的所有操作。

public class Test {
	public static void main(String[] args) throws IOException {
		//file对象代表一个文件,并不是真正的在磁盘上创建文件
		// File file = new File("E:/test/test.txt");
		File file = new File("E:\\test\\test.txt");
		//检查一个文件或目录是否存在
		System.out.println(file.exists());
		//如果文件不存在就创建并返回true,否则不创建并返回false,是真正的创建文件
		System.out.println(file.createNewFile());
		//获取文件或目录的名称
		System.out.println(file.getName());//test.txt
		//获取文件或目录的路径
		System.out.println(file.getAbsolutePath());//E:\test\test.txt
		//返回代表其父目录的文件对象
		System.out.println(file.getParentFile());
		//返回代表其父目录的文件对象
		File parent = file.getParentFile();
		System.out.println(parent.getName());//获取名称
		//获取文件的大小,以字节为单位
		System.out.println(file.length());
		//判断此对象是否代表一个文件
		System.out.println(file.isFile());
		//判断此对象是否代表一个目录
		System.out.println(parent.isDirectory());
		//是否是隐藏文件
		System.out.println(file.isHidden());
		//是否可读
		System.out.println(file.canRead());
		//是否可写
		System.out.println(file.canWrite());
		//重命名文件
		// System.out.println(file.renameTo(new File("E:/test/test1.txt")));
		//删除文件
		System.out.println(file.delete());
	}
}
public class Test{
	public static void main(String[] args) {
		File file = new File("E:/test1");
		if (!file.exists()) {
		// 在磁盘上创建目录
		file.mkdir();
		}
		//获取目录中的所有文件
		File[] files = file.listFiles();
		for (File f : files) {
			System.out.println(f.getAbsolutePath());
		}
	}
}
文件过滤
public class Test{
	public static void main(String[] args) {
		File file = new File("E:/test1");
		if (!file.exists()) {
			// 在磁盘上创建目录
			file.mkdir();
		}
		//获取目录中的所有文件(包括文件和目录)
		File[] files = file.listFiles(new FilenameFilter() {
		//返回true代表接受文件,返回false代表不接受文件
		@Override
		public boolean accept(File dir, String name) {
			//dir是文件所在的目录
			//只接受txt文件
			return name.endsWith(".txt");
		}
	});
	for (File f : files) {
		System.out.println(f.getAbsolutePath());
		}
	}
}
public class Test{
	public static void main(String[] args) {
		File file = new File("E:/test1");
		if (!file.exists()) {
		// 在磁盘上创建目录
		file.mkdir();
	}
		//获取目录中的所有文件(包括文件和目录)
		File[] files = file.listFiles(new FileFilter() {
		//返回true代表接受文件,返回false代表不接受文件
		@Override
			public boolean accept(File f) {
			//只接受10个字节以上的文件
			return f.length() >= 10;
		}
	});
	for (File f : files) {
		System.out.println(f.getAbsolutePath());
		}
	}
}

IO

流实现文件的读写

FileWriter 提供了关于写文件的基本操作。

public class Test{
	public static void main(String[] args) {
		FileWriter fw = null;
		try {
		//创建一个输出流,如果文件不存在,就会创建一个文件
		fw = new FileWriter("E:/test/test.txt");
		//向流中写
		fw.write("中国你好");
		//刷新流
		fw.flush();
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
		try {
			//关闭流
			fw.close();
		} catch (IOException e) {
		e.printStackTrace();
			}
		}
	}
}
public class Test{
	public static void main(String[] args) {
		FileReader fr = null;
		try {
		//创建一个输入流
		fr = new FileReader("E:/test/test.txt");
		//从流中读
		// System.out.println((char)fr.read());//读取一个字符
		char[] chars = new char[256];
		//将文件中的内容读到字符数组中,尝试读取chars.length个
		//返回实际读到的字符数
		int bs = fr.read(chars);
		char[] arr = Arrays.copyOf(chars, bs);
		String str = new String(arr);
		System.out.println(str);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
		try {
			fr.close();
		} catch (IOException e) {
			e.printStackTrace();
			}
		}
	}
}
流实现文件的拷贝

单字符拷贝 每次读写一个字符。

public class Test{
	public static void main(String[] args) {
		FileReader fr = null;
		FileWriter fw = null;
		try {
			//输入流,连接源文件和程序
			fr = new FileReader("E:/test/test.txt");
			//输出流,连接程序和目标文件
			fw = new FileWriter("E:/test1/test.txt");
			int c = 0;//保存每次读到的字符
			//read方法每次从输入流读取一个字符
			//如果read方法读到文件的末尾,那么它就返回-1
			while(-1 != (c = fr.read())){
				//每次向输出流写入一个字符
				fw.write(c);
				}
			} catch (FileNotFoundException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}finally{
			try {
				//关闭输入流
				fr.close();
			} catch (IOException e1) {
				e1.printStackTrace();
			}
		try {
			//刷新流
			fw.flush();
		//关闭输出流
			fw.close();
		} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}

字符数组拷贝 每次读写一个字符数组.。

public class Test{
	public static void main(String[] args) {
		FileReader fr = null;
		FileWriter fw = null;
		try {
			//输入流,连接源文件和程序
			fr = new FileReader("E:/test/test.txt");
			//输出流,连接程序和目标文件
			fw = new FileWriter("E:/test1/test.txt");
			char[] chars = new char[4];//保存读取到的字符
			int len = 0;//保存实际读取到的字符数
			//read方法尝试读取chars.length个字符,返回实际读到的字符数
			//如果读到文件的末尾,则返回-1
			while(-1 != (len = fr.read(chars))){
				//将字符数组中的字符写入到输出流
				//第二个参数表示从字符数组的哪个索引处开始取字符
				//第三个参数表示写多少个字符
				fw.write(chars, 0, len);
			}
			} catch (FileNotFoundException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}finally{
				try {
						//关闭输入流
						fr.close();
				} catch (IOException e1) {
					e1.printStackTrace();
			}
		try {
				//刷新流
				fw.flush();
				//关闭输出流
				fw.close();
			} catch (IOException e) {
					e.printStackTrace();
			}
		}
	}
}
字节流与字符流

字节流和字符流拷贝 字节流每次读写一个字节,字符流每次读写一个字符。 字节流可以读写任何文件,字符流只能读写文本文件。 字节流继承于InputStream和OutputStream 字符流继承于Reader和Writer 凡是带Stream的都是字节流,否则就是字符流 如果要读写二进制文件,就使用字节流。 如果要读写文本文件,并且需要在程序中查看其内容,就使用字符流。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值