【JAVA】File类和IO类的使用

1. File类的应用

要操作文件首先要获取文件对象:

File file=new File("指定文件路径,注意转义")
1.1 判断文件是否存在
boolean isExist=file.exists();
1.2 创建此文件,如果这个文件不存在的情况下
		if(!file.exists()){
			file.createNewFile();//创建一个新的文件,确保前面的目录都已经存在
		}
1.3 创建文件夹
		if(!file.exists()){
			file.mkdir();//创建一级目录
			file.mkdirs();//创建多级目录
		}
1.4 对于已经存在的目录或者文件,判断其类型
file.isFile();//是否为文件类型
file.isDirectory();//是否为文件夹类型
1.5 遍历一个文件夹
/**
	 * 输出这个文件名称或者遍历这个文件夹
	 * 
	 * @param file
	 *            传入一个文件
	 */
	public static void viewFile(File file) {
		if (file.exists()) {
			// file.createNewFile();//创建一个新的文件,确保前面的目录都已经存在
			if (file.isFile()) {
				System.out.println(file.getAbsolutePath());
			} else if (file.isDirectory()) {
				System.out.println(file.getAbsolutePath());
				File[] files = file.listFiles();
				for (File file2 : files) {
					viewFile(file2);
				}
			}
		} else {
			System.out.println("文件不存在");
		}
	}
1.6 删除这个文件
		File file=new File("D:\\hello");
		deleteFile(file);

		/**
	 * 删除一个文件或者是文件夹
	 * @param file 传入一个文件或者文件夹
	 */
	public static void deleteFile(File file) {
		if (file.exists()) {
			if (file.isFile()) {
				System.out.println(file.delete());
			} else if (file.isDirectory()) {
				File[] files = file.listFiles();
				for (File file2 : files) {
					deleteFile(file2);
				}
				System.out.println(file.delete());
			}
		} else {
			System.out.println("文件不存在");
		}
	}

2. IO类

IO流是操作文件读写的技术
分类:
字节流:一般是操作图片,视频,音频文件的读写
字符流:一般是操作文本文件的读写

2.1 字符流操作

常用的字符流类型:

  • BufferReader
    readline():一次性读取一行
    close():关闭读取流
  • BufferWriter
    write():写内容
    newLine():重新启一行
    close():关闭输出流

下面代码是一个字符流操作的示意,将D盘的1.txt文件内容复制到了相同位置的2.txt文件上:

public static void main(String[] args) {
		BufferedReader reader = null;
		BufferedWriter writer = null;
		// d盘的1.txt复制成2.txt
		try {
			File sourceFile = new File("D:\\1.txt");
			File targetFile = new File("D:\\2.txt");

			reader = new BufferedReader(new FileReader(sourceFile));
			writer = new BufferedWriter(new FileWriter(targetFile));
			while (true) {
				String line = reader.readLine();
				if (line == null) {
					break;
				} else {
					writer.write(line + "\n");
				}
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			if (writer != null) {
				try {
					writer.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			if (reader != null) {
				try {
					reader.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
	}
2.2 字节流操作

常用的字符流类型:

  • FileInputStream
    read(byte[] bytes) : 将数据读到bytes数组,返回实际读取数据大小size。
  • FileOutputStream
    write(byte[] bytes,0,size) : 将数组里的数据写到输出流,每次实际写的数据大小为上面读取数据的大小

下面是一个将D盘1.jpg复制到2.jpg的程序:

public static void main(String[] args) {
		FileInputStream is=null;
		FileOutputStream os=null;
		try {
			is=new FileInputStream(new File("D:\\1.jpg"));
			os=new FileOutputStream(new File("D:\\2.jpg"));
			while (true) {
				//创建一个buffer(缓冲区),将读取到的数据放入其中
				byte [] data=new byte[1024];
				int size=is.read(data);
				if (size==-1) {
					break;
				}else {
					os.write(data, 0, size);
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			if(is!=null){
				try {
					is.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
			if (os!=null) {
				try {
					os.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}

最后总结一下:
如果你对此文有任何疑问,如果你也需要接口项目实战,如果你对软件测试、接口测试、自动化测试、面试经验交流感兴趣欢迎加入:软件测试技术群:593462778,群里的免费资料都是笔者十多年测试生涯的精华。还有同行大神一起交流技术哦。

作者:暗潮汹涌
原创不易,欢迎转载,但未经作者同意请保留此段声明,并在文章页面明显位置给出原文链接。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值