前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java中IO写文件工具类

java中IO写文件工具类

作者头像
用户5166556
发布2019-04-16 11:35:58
7920
发布2019-04-16 11:35:58
举报
代码语言:javascript
复制
下面是一些根据常用java类进行组装的对文件进行操作的类,平时,我更喜欢使用Jodd.io中提供的一些对文件的操作类,里面的方法写的简单易懂。
代码语言:javascript
复制
其中jodd中提供的JavaUtil类中提供的方法足够我们使用,里面的方法写的非常简练,例如append,read等方法,封装更好,更符合面向对象,
代码语言:javascript
复制
这里面我写的一些方法可多都是模仿jodd,从里面进行抽取出来的。
代码语言:javascript
复制
	/**
	 * 获取路径文件夹下的所有文件
	 * @param path
	 * @return
	 */
	public static File[] getKeywordFiles(String path) {
		File dir = new File(path);
		if (!dir.exists())
			return null;
		File[] fs = dir.listFiles();
		return fs;
	}
		/**
	 * 删除文件夹 param folderPath 文件夹完整绝对路径
	 */
	private static void delFolder(String folderPath) {
		try {
			delAllFile(folderPath); // 删除完里面所有内容
			String filePath = folderPath;
			filePath = filePath.toString();
			java.io.File myFilePath = new java.io.File(filePath);
			myFilePath.delete(); // 删除空文件夹
		} catch (Exception e) {
			log.error(e);
		}
	}

	/**
	 * 读取一个文件
	 * @param filePathAndName
	 * @return
	 * @throws IOException
	 */
	public static List<String> readFile(String filePathAndName)
			throws IOException {
		FileInputStream fis = new FileInputStream(filePathAndName);
		InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
		BufferedReader br = new BufferedReader(isr);
		LineNumberReader lnr = new LineNumberReader(br);

		List<String> returnValue = new ArrayList<String>();
		int cnt = 0;
		while (true) {
			cnt++;
			String tempStr = lnr.readLine();
			if (tempStr == null)
				break;
			if (tempStr.length() < 2)
				continue;
			returnValue.add(tempStr);
		}
		lnr.close();
		br.close();
		isr.close();
		fis.close();
		return returnValue;
	}
	
	/**
	 * 读取一个文件,并排重后返回
	  
	 */
	public static List<String> readFileNoDup(String filePathAndName)
			throws IOException {
		FileInputStream fis = new FileInputStream(filePathAndName);
		InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
		BufferedReader br = new BufferedReader(isr);
		LineNumberReader lnr = new LineNumberReader(br);

		Set<String> set = new HashSet<String>();
		while (true) {
			String tempStr = lnr.readLine();
			if (tempStr == null)
				break;
			if (tempStr.length() < 2)
				continue;
			set.add(tempStr.trim());
		}
		lnr.close();
		br.close();
		isr.close();
		fis.close();
		List<String> returnValue = new ArrayList<String>(set.size());
		returnValue.addAll(set);
		return returnValue;
	}
	
	/**
	 * 添加内容到指定文件 如果该文件不存在,则创建并添加内容 如果该文件已存在,则添加内容到已有内容最后
	 * flag为true,则向现有文件中添加内容,否则覆盖原有内容
	 
	 */
	public static void writeFile(String filePathAndName, String fileContent,
			boolean flag) throws IOException {
		if (null == fileContent || fileContent.length() < 1)
			return;
		File file = new File(filePathAndName);

		if (!file.exists()) {
			file.createNewFile();
		}
		FileOutputStream fos = new FileOutputStream(filePathAndName, flag);
		OutputStreamWriter osw = new OutputStreamWriter(fos, "utf-8");
		osw.write(fileContent + "\r\n");
		osw.flush();
		osw.close();
	}

	/**
	 * 添加内容到指定文件 如果该文件不存在,则创建并添加内容 如果该文件已存在,则添加内容到已有内容最后
	 * flag为true,则向现有文件中添加内容,否则覆盖原有内容
	 
	 */
	public static void writeFile(String filePathAndName,
			List<String> fileContent, boolean flag) throws IOException {
		File file = new File(filePathAndName);

		if (!file.exists()) {
			file.createNewFile();
		}
		FileOutputStream fos = new FileOutputStream(filePathAndName, flag);
		OutputStreamWriter osw = new OutputStreamWriter(fos, "utf-8");
		for (String temp : fileContent)
			osw.write(temp + "\r\n");
		osw.flush();
		osw.close();
	}
	
	/**
	 * 添加内容到指定文件 如果该文件不存在,则创建并添加内容 如果该文件已存在,则添加内容到已有内容最后
	 * flag为true,则向现有文件中添加内容,否则覆盖原有内容
	 
	 */
	public static void writeFile(String filePath,String filename,
			List<String> fileContent, boolean flag) throws IOException {
		File file = new File(filePath);
		
		if(!file.exists()){
			boolean tempFlag = file.mkdirs();
			if(!tempFlag){
				log.error("文件夹"+filePath+"创建失败");
				return;
			}
		}
		
		file = new File(filePath,filename);

		if (!file.exists()) {
			file.createNewFile();
		}
		FileOutputStream fos = new FileOutputStream(filePath+filename, flag);
		OutputStreamWriter osw = new OutputStreamWriter(fos, "utf-8");
		for (String temp : fileContent)
			osw.write(temp + "\r\n");
		osw.flush();
		osw.close();
	}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2014年07月05日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档