`
zhangcxy
  • 浏览: 42628 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java文本内指定字符位置添加内容

    博客分类:
  • JAVA
阅读更多
package com.zhang.stream;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.RandomAccessFile;
import java.util.LinkedList;
import java.util.List;

import com.zhang.common.Common;

/** 
* @Package com.zhang.stream 
* @ClassName: PubFileUtil 
* @Description: 读写有风险,操作需谨慎(注意备份)  
* @author: ZhangSongbo
* @date 2014-9-28 上午11:47:42 
* @version V1.0 
*/ 
public class PubFileUtil {

	private static String filePath = "d:\\EduInfo.java";
        public static final String RN = "\r\n";//可替换Common.RN

	/**
	 * @Title: readFileList
	 * @Description: 所给目录下的所有文件名称集合
	 * @param @param filepath 文件路径
	 * @param @return   返回当前路径下所有文件名称集合
	 * @return List<String>   
	 * @throws IOException
	 */
	public static List<String> readFileList(String filepath) throws IOException {
		List<String> list = new LinkedList<String>();
		try {
			File file = new File(filepath);
			if (!file.isDirectory()) {
				System.out.println("文件");
				System.out.println("path=" + file.getPath());
				System.out.println("absolutepath=" + file.getAbsolutePath());
				System.out.println("name=" + file.getName());

			} else if (file.isDirectory()) {
				System.out.println("文件夹");
				String[] filelist = file.list();
				for (int i = 0; i < filelist.length; i++) {
					File readfile = new File(filepath + "\\" + filelist[i]);
					if (!readfile.isDirectory()) {
						list.add(readfile.getName());
					} else if (readfile.isDirectory()) {
						readFileList(filepath + "\\" + filelist[i]);
						System.out.println(filepath + "\\" + filelist[i]);
					}
				}

			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
		System.out.println(list);
		return list;

	}

	/**
	 * @Title: randomAccessWrite
	 * @Description: 随机流写操作
	 * @param @param filePath 文件路径
	 * @param @param content  追加的内容 
	 * @return void   
	 * @throws IOException
	 */
	public static void randomAccessWrite(String filePath, String content) {
		File fileName = new File(filePath);
		RandomAccessFile randomFile = null;
		try {
			// 打开一个随机访问文件流,按读写方式
			randomFile = new RandomAccessFile(fileName, "rw");
			// 文件长度,字节数
			long fileLength = randomFile.length();
			// 将写文件指针移到文件尾。
			// byte[] buffer = new byte[1024];
			randomFile.seek(fileLength);
			randomFile.write(content.getBytes());
			System.out.println("操作完成!");
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (randomFile != null) {
				try {
					randomFile.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}

	/**
	 * @Title: findLines
	 * @Description: TODO
	 * @param @param filePath 文件路径
	 * @param @param context 查找的字符串
	 * @param @return 包含搜索的字符串的行
	 * @param @throws IOException   
	 * @return List<String>   
	 */
	public static List<String> findLines(String filePath, String context) throws IOException {
		List<String> list = new LinkedList<String>();
		BufferedReader read = new BufferedReader(new FileReader(filePath));
		String str = null;
		while ((str = read.readLine()) != null) {
			if (str.indexOf(context) != -1) {
				list.add(str);
			}
		}
		read.close();
		return list;
	}

	/**
	 * @Title: findParagraph
	 * @Description: 根据查找字符串划分内容(第一个符合的字符串对象有效)
	 * @param @param filePath 文件路径
	 * @param @param context 查找的字符串
	 * @param @return List<String>
	 * @param @throws IOException   
	 * @return List<String>   
	 * @throws
	 */
	public static List<String> findParagraph(String filePath, String context) throws IOException {
		BufferedReader read = new BufferedReader(new FileReader(filePath));
		List<String> list = new LinkedList<String>();
		String paragraphHead = "";
		String paragraphEnd = "";
		String line = "";
		int index = 0;
		int lineNum=1;
		while ((line = read.readLine()) != null) {
			if (index == 0) {
				paragraphHead += (line + Common.RN);
			}
			if (line.indexOf(context) != -1 && index == 0) {
				System.out.println("行号:"+lineNum+",当前行内容: "+line);
				list.add(paragraphHead);
				index++;
				continue;
			}
			if (index > 0) {
				paragraphEnd += (line + Common.RN);
			}
			lineNum++;
		}
		list.add(paragraphEnd);
		read.close();
		return list;
	}

	/**
	 * @Title: writeFile
	 * @Description: TODO
	 * @param @param filePath 文件路径名称
	 * @param @param context要写入的文件内容
	 * @param @param codeType编码格式(默认为utf-8)
	 * @param @throws IOException   
	 * @return void   
	 * @throws IOException
	 */
	public static void writeFile(String filePath, String context, String codeType) throws IOException {
		File f = new File(filePath);
		InputStreamReader read = null;
		if (codeType != null && !codeType.trim().equals("")) {
			read = new InputStreamReader(new FileInputStream(f), codeType);
		} else {
			read = new InputStreamReader(new FileInputStream(f), "UTF-8");
		}
		BufferedReader reader = new BufferedReader(read);
		String line = "";
		String str = "";
		while ((line = reader.readLine()) != null) {
			str += (line + Common.RN);
		}
		OutputStream out = new FileOutputStream(f);
		byte[] bt = context.getBytes();
		out.write(bt);
		out.flush();
		out.close();
		System.out.println("读取文件结束!" + Common.RN + "开始向文件开始追加内容" + Common.RN + str);
		randomAccessWrite(filePath, str);

	}

	/**
	 * @Title: writeParagraph
	 * @Description: TODO
	 * @param @param filePath 路径
	 * @param @param context 要查找的字符串
	 * @param @param wcontext要写入的内容
	 * @param @param codeType 编码格式(默认utf-8)
	 * @param @throws IOException   
	 * @return void   
	 * @throws
	 */
	public static void writeParagraph(String filePath, String context, String wcontext, String codeType) throws IOException {
		File fileName = new File(filePath);
		List<String> list = findParagraph(filePath, context);
		RandomAccessFile randomFile = null;
		OutputStreamWriter write = null;
		if (codeType != null && !codeType.trim().equals("")) {
			write = new OutputStreamWriter(new FileOutputStream(fileName), codeType);
		} else {
			write = new OutputStreamWriter(new FileOutputStream(fileName), "utf-8");
		}
		//清空文件内容
		write.write("");
		write.close();
		try {
			// 打开一个随机访问文件流,按读写方式
			randomFile = new RandomAccessFile(fileName, "rw");
			int index=0;
			for (int i = 0; i < list.size(); i++) {
				if (index==0) {
					randomFile.write(list.get(i).getBytes());
					randomFile.write((wcontext + Common.RN).getBytes());
				}
				if (index>0) {
					randomFile.write(list.get(i).getBytes());
				}
				index++;
			}
			System.out.println("操作完成!");
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (randomFile != null) {
				try {
					randomFile.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}

	}

	public static void main(String[] args) throws IOException {
		long startTime = System.currentTimeMillis();
		writeParagraph( filePath,  "{",  "做人要像陈冠希,随时带好照相机!",  null);
		long endTime= System.currentTimeMillis();
		System.out.println("time:"+(endTime-startTime)+"ms");
		//readFileList("D:\\Workspaces\\dao\\src");
	}

}

 

分享到:
评论

相关推荐

    java 文本字符串替换工具

    这个"java 文本字符串替换工具"很可能是为了帮助开发者高效地搜索和替换文件中的特定文本内容。让我们详细了解一下如何在Java中实现这样的功能,以及如何通过批处理脚本(bat和sh)进行调用。 首先,要实现文本文件...

    删除文本中指定的字符

    删除指定字符常用于数据清洗、日志分析、文本标准化、隐私保护(如删除敏感个人信息)等场景。 总之,删除文本中指定的字符是数据预处理的关键步骤,涉及多种编程语言和工具,合理运用这些技术可以极大地提高文本...

    Java读取PDF查找指定文字位置,并添加悬浮图片(文档签字/盖章)

    通过遍历页面上的文本,可以找到指定的文字及其位置信息。 3. **定位文字位置**:一旦找到目标文字,我们可以获取其坐标,这通常包含在`LocationTextExtractionStrategy`的`TextRenderInfo`对象中。这些坐标可以...

    JAVA 从一个字符串中删除指定字符

    在Java编程语言中,删除字符串中的指定字符是一个常见的任务,特别是在处理用户输入或者文本数据时。这个过程涉及到字符串操作和字符遍历。本篇将详细解释如何实现这一功能,并拓展到相关的Java基础知识。 首先,...

    java 统计指定文件中的字符个数

    在Java编程语言中,统计指定文件中的字符个数是一项常见的任务,这主要涉及到文件I/O操作和字符流处理。下面将详细讲解如何实现这个功能,以及相关的重要知识点。 首先,要进行文件I/O操作,Java提供了`java.io`包...

    Java分割字符串

    在Java编程语言中,分割字符串是一项常见的操作,它允许我们将一个长字符串分解成多个子字符串,每个子字符串对应原字符串中的某个部分。这通常通过使用`split()`方法来实现,该方法是Java `String`类的一个成员。在...

    java分析文本中字符出现的概率

    在Java编程环境中,分析文本中字符出现的概率是一项常见的任务,特别是在自然语言处理、文本挖掘或数据分析等领域。这个任务可以通过读取文本文件,统计每个字符的出现次数,然后除以总字符数来实现。以下是实现这一...

    将内容中的符合url格式的字符串转换为超链接(JAVA版)

    在Java编程中,将文本内容中的符合URL格式的字符串转换为超链接是一项常见的需求,特别是在处理用户生成内容或网络爬虫应用中。本教程将详细讲解如何使用Java实现这一功能,主要涉及URL正则表达式匹配和字符串处理...

    java实现在pdf模板的指定位置插入图片

    Java实现PDF模板指定位置插入图片 Java语言是当今最流行的编程语言之一,对于PDF文档的处理有着非常广泛的应用。本文将详细介绍如何使用Java语言在PDF模板的指定位置插入图片,实现对PDF文档的自定义和编辑。 ...

    java实现word表格指定位置盖章,并且设置章悬浮于文字之上

    在Java开发中,实现Word表格指定位置盖章并设置章悬浮于文字之上,涉及到的技术主要包括Apache POI库的使用、图像处理以及Word文档对象模型的理解。Apache POI是Java中用于处理Microsoft Office格式文件(如DOCX)的...

    java 给图像加上字符串

    在Java编程语言中,添加文本或字符串到图像是一项常见的任务,尤其在创建自定义徽标、水印或者处理图像数据时。以下是一个详细的步骤指南,教你如何使用Java给图像加上字符串。 首先,我们需要引入必要的Java类库。...

    java非法字符过滤器

    ### Java非法字符过滤器:深度解析与应用 在软件开发中,确保数据的完整性和安全性是至关重要的。尤其是在处理用户输入或外部数据源时,非法字符的过滤成为了必不可少的环节。本文将深入探讨一个Java非法字符过滤器...

    一次查找替换文本中多个字符串(添加还原功能)

    这个Java开发的应用程序允许用户批量地在文本文件中查找并替换多个特定的字符串,同时它还具有一个独特的功能——替换还原,这在误操作或需要恢复原始文本时显得尤为有用。 首先,我们来了解一下“查找与替换”功能...

    java字符串处理输入一个字符串和一个字符后,原字符串中所有该字符将被删除并显示出结果

    6. **处理字符串**:在处理方法中,获取两个文本字段的值,使用`String`类的`replace()` 或 `replaceAll()` 方法删除指定字符,然后更新结果。 7. **显示结果**:在Applet的某个地方(如`JLabel`)显示处理后的字符...

    java朗读中文字符串.zip

    Java语言在处理文本,尤其是中文字符串时,提供了丰富的API和库。这个压缩包"java朗读中文字符串.zip"很可能包含了一个或多个示例程序,演示如何利用Java进行文本到语音(Text-to-Speech, TTS)转换,特别是针对中文...

    java文本编辑器

    Java文本编辑器是一种基于Java编程语言开发的简单但功能齐全的文本处理工具。它允许用户创建、打开、编辑和保存各种纯文本文件。在本文中,我们将深入探讨Java文本编辑器的设计原理、主要功能以及其背后的编程技术。...

    java 数组和字符串

    ` 在字符串末尾添加文本。 - `sb.insert(1, "a");` 在指定位置插入文本。 - `sb.delete(1, 4);` 删除指定范围内的字符。 - `sb.reverse();` 反转字符串顺序。 #### 相等性判断的两种方式 - **`==`运算符**:...

    java 创建字符串类

    - **常用方法**:如`append()`用于添加字符串,`insert()`用于在指定位置插入字符串,`delete()`和`replace()`用于删除或替换字符等。 3. **字符串常量池**: - 字符串常量池是JVM内存中的一个特殊区域,用于存放...

    java正则表达式替换字符串

    - **Matcher.replaceFirst(String replacement)**:将第一个匹配的子串替换为指定字符串。 - **Matcher.find()**:查找下一个匹配的子串。 - **Matcher.group()**:返回上一次匹配的子串。 - **Matcher.start()**:...

Global site tag (gtag.js) - Google Analytics