java之File及io字节流

1、搜索磁盘上某个目录下的所有文件(包括子文件夹)

package com.qf.home;

import java.io.File;

public class Home01 {
	public static void main(String[] args) {
		//1、搜索磁盘上某个目录下的所有文件(包括子文件夹)

			File file = new File("C:/Users/Administrator/Desktop/a");
			readFile(file);
		}

		private static void readFile(File f) {
			//如果是文件夹
			if(f.isDirectory()){
				File[] listFiles = f.listFiles();
				//如果文件夹不为空
				if(listFiles != null){
					for (File file : listFiles) {
						readFile(file);
					}
			}
		}else{
				System.out.println(f.getName());
			}
			
	}

}

2、读取磁盘上一个文本文件的内容

package com.qf.home;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;

public class Home02 {
	public static void main(String[] args) {
		//2、读取磁盘上一个文本文件的内容

		//读文件
		try {
			//得到文件
			File file = new File("C:/Users/Administrator/Desktop/b.txt");
			//得到文件读取的字符流
			FileReader fileReader = new FileReader(file);
			//得到带缓冲字符流
			BufferedReader bufferedReader = new BufferedReader(fileReader);
			String readLine = null;
			while((readLine = bufferedReader.readLine()) != null){
				System.out.println(readLine);
			}
			fileReader.close();
			bufferedReader.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	
	}

}

3、将一首古诗内容写入一个txt文件

package com.qf.home;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;

public class Home03 {
	public static void main(String[] args) {
		//3、将一首古诗内容写入一个txt文件
		//写文件
		try {
			//得到文件
			File file = new File("C:/Users/Administrator/Desktop/c.txt");
			//得到文件写入的字符流
			FileWriter fileWriter = new FileWriter(file);
			//得到带缓冲字符流
			BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
			bufferedWriter.write("静夜思");
			bufferedWriter.newLine();//表示在写入时换行
			bufferedWriter.write("床前明月光,");
			bufferedWriter.newLine();//表示在写入时换行
			bufferedWriter.write("疑是地上霜;");
			bufferedWriter.newLine();//表示在写入时换行
			bufferedWriter.write("举头望明月,");
			bufferedWriter.newLine();//表示在写入时换行
			bufferedWriter.write("低头思故乡。");
			bufferedWriter.flush();//清空缓冲区并写入文件
			bufferedWriter.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}


}

4、将a文件的内容复制到b文件中

package com.qf.home;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;

public class Home04 {
	public static void main(String[] args) {
		//4、将a文件的内容复制到b文件中

		//边读编写,字符流
		try {
			//得到源文件
			File file = new File("C:/Users/Administrator/Desktop/b.txt");
			//得到目标文件
			File file1 = new File("C:/Users/Administrator/Desktop/d.txt");
			//得到源文件读取的字符流//得到源文件带缓冲字符流
			FileReader fileReader = new FileReader(file);
			BufferedReader bufferedReader = new BufferedReader(fileReader);
			//得到目标文件写入的字符流//得到目标文件带缓冲字符流
			FileWriter fileWriter = new FileWriter(file1);
			BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
			String s = null;
			while((s = bufferedReader.readLine()) != null){
				bufferedWriter.write(s);//写入
				bufferedWriter.newLine();//换行
				bufferedWriter.flush();//清空缓冲区并写入文件
			}
			fileReader.close();
			bufferedReader.close();
			fileWriter.close();
			bufferedWriter.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	
	}
	
}

5、文本文件中有一些敏感词语,如:吉你抬没,傻X等,需要对所有敏感词进行屏蔽(替换为*),将替换后的文字保存到新的文件中

package com.qf.home;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;

public class Home05 {
	public static void main(String[] args) {
		// 5、文本文件中有一些敏感词语,如:吉你抬没,傻X等,需要对所有敏感词进行屏蔽(替换为*),将替换后的文字保存到新的文件中
		//定义敏感词数组
		String[] senList = {"傻叉","狗叼","草利马"};
		// 边读编写,字符流
		try {
			// 得到源文件
			File file = new File("C:/Users/Administrator/Desktop/b.txt");
			// 得到目标文件
			File file1 = new File("C:/Users/Administrator/Desktop/e.txt");
			// 得到源文件读取的字符流//得到源文件带缓冲字符流
			FileReader fileReader = new FileReader(file);
			BufferedReader bufferedReader = new BufferedReader(fileReader);
			// 得到目标文件写入的字符流//得到目标文件带缓冲字符流
			FileWriter fileWriter = new FileWriter(file1);
			BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
			String s = null;
			while ((s = bufferedReader.readLine()) != null) {
				for (String string : senList) {
					s=s.replace(string,"*");
				}
//				if(s.indexOf("傻叉")!=-1){
//					s=s.replace("傻叉","*");
//				}
//				if (s.indexOf("狗叼")!=-1) {
//					s=s.replace("狗叼","*");
//				}
				bufferedWriter.write(s);// 写入
				bufferedWriter.newLine();// 换行
				bufferedWriter.flush();// 清空缓冲区并写入文件
			}
			fileReader.close();
			bufferedReader.close();
			fileWriter.close();
			bufferedWriter.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}

6、搜索某个目录中所有的jpg文件,全部复制到C:\images目录中

package com.qf.home;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FilenameFilter;
import java.io.InputStream;
import java.io.OutputStream;

public class Home06 {
	public static void main(String[] args) {
		//6、搜索某个目录中所有的jpg文件,全部复制到C:\images目录中
		try {
			// 得到源文件
			File file1 = new File("C:\\Users\\Administrator\\Desktop\\img");
			readFile(file1);
		} catch (Exception e) {
			e.printStackTrace();
		}
	
	}
	private static void readFile(File f) {
		String path = f.getPath();
		String newPath = path.replace("C:\\Users\\Administrator\\Desktop\\img", "C:\\Users\\Administrator\\Desktop\\images");
		// 如果是文件
		if (f.isDirectory()) {
			File directorFile = new File(newPath);
			if (!directorFile.exists()) {
				directorFile.mkdir();
			}
			//用FilenameFilter进行过滤
			File[] listFiles = f.listFiles(new FilenameFilter() {
				@Override
				public boolean accept(File dir, String name) {
					// 得到当前文件
					File currentFile = new File(dir + File.separator + name);
					// 判断当前文件是否文件夹
					if(currentFile.exists() && currentFile.isDirectory()) {
						return true;
					}
					// 判断当前文件是否图片
					if(name.endsWith(".jpg")) {
						// 判断文件大小是否小于1M
						if(currentFile.length() < 1024 * 1024) {
							return true;
						}else {
							return false;
						}
					}else {
						return false;
					}
				}
			});
			// 如果文件夹不为空
			if (listFiles != null) {
				for (File file : listFiles) {
					readFile(file);
				}
			}
		} else {
			File newFile = new File(newPath);
			copyFile(f, newFile);
		}

	}
	public static void copyFile(File srcFile, File destFile) {
		try {
			// 得到读取文件的流
			InputStream is = new FileInputStream(srcFile);
			BufferedInputStream bis = new BufferedInputStream(is);
			
			// 得到写入文件的流
			OutputStream os = new FileOutputStream(destFile);
			BufferedOutputStream bos = new BufferedOutputStream(os);

			// 每次读取的有效字节长度
			int len;
			byte[] buffer = new byte[1024];
			
			// -1表示结束
			while((len = bis.read(buffer)) != -1) {
				// 每次写入时,写buffer中从开始到有效字节长度为止
				bos.write(buffer, 0, len);
				bos.flush();
			}
			
			is.close();
			bis.close();
			os.close();
			bos.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值