0 0

java修改文件的多行内容3

有一个文本文件,假设内容如下:
addsfsf
bfdgdf
cdsfsd
d df

要怎么同时修改多行内容,如a开头和d开头的
2010年12月29日 10:56

6个答案 按时间排序 按投票排序

0 0

思路:
1、将文件内容一行一行的读出来
2、在每读一行的时候,判断是否以a或b开始,如果是则进行处理,然后写到缓冲对象。如果不是则直接写入缓冲对象中
3、将缓冲对象中的内容回写到文件中

完整代码如下:

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

/**
 * 修改文件
 */
public class FileModify {

	/**
	 * 读取文件内容
	 * 
	 * @param filePath
	 * @return
	 */
	public String read(String filePath) {
		BufferedReader br = null;
		String line = null;
		StringBuffer buf = new StringBuffer();
		
		try {
			// 根据文件路径创建缓冲输入流
			br = new BufferedReader(new FileReader(filePath));
			
			// 循环读取文件的每一行, 对需要修改的行进行修改, 放入缓冲对象中
			while ((line = br.readLine()) != null) {
				// 此处根据实际需要修改某些行的内容
				if (line.startsWith("a")) {
					buf.append(line).append(" start with a");
				}
				else if (line.startsWith("b")) {
					buf.append(line).append(" start with b");
				}
				// 如果不用修改, 则按原来的内容回写
				else {
					buf.append(line);
				}
				buf.append(System.getProperty("line.separator"));
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			// 关闭流
			if (br != null) {
				try {
					br.close();
				} catch (IOException e) {
					br = null;
				}
			}
		}
		
		return buf.toString();
	}
	
	/**
	 * 将内容回写到文件中
	 * 
	 * @param filePath
	 * @param content
	 */
	public void write(String filePath, String content) {
		BufferedWriter bw = null;
		
		try {
			// 根据文件路径创建缓冲输出流
			bw = new BufferedWriter(new FileWriter(filePath));
			// 将内容写入文件中
			bw.write(content);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			// 关闭流
			if (bw != null) {
				try {
					bw.close();
				} catch (IOException e) {
					bw = null;
				}
			}
		}
	}
	
	/**
	 * 主方法
	 */
	public static void main(String[] args) {
		String filePath = "C:/file.txt"; // 文件路径
		FileModify obj = new FileModify();
		obj.write(filePath, obj.read(filePath)); // 读取修改文件
	}

}

2011年1月01日 20:57
0 0

其实可以考虑通过按行读取以后,需要修改的行进行修改写入临时的集合中,然后将集合重新写入文件。

2010年12月29日 15:58
0 0

多线程 一个线程修改一行  呵呵呵

2010年12月29日 11:14
0 0

并行修改文件不是不行,只是没有必要。

修改文件也是读出文件的内容,然后再写回去


        BufferedReader reader = new BufferedReader(new FileReader("filename"));

        String line = null;
        
        // 一行一行的读
        
        StringBuilder sb = new StringBuilder();

        while ((line = reader.readLine()) != null) {
            if (line.startsWith("a") || line.startsWith("d")) {
              
            }
            sb.appender(line);
            sb.appender("\r\n");
        }
        reader.close()

        //写回去
        RandomAccessFile mm = new RandomAccessFile(filename, "rw");
        mm.writeBytes(sb.getBytes);

        mm.close()

2010年12月29日 11:13
0 0

那只能用读文件的方式,一行一行读然后正则表达式匹配.
要么就是一次性读取整个文件成一个字符串,然后正则表达式匹配后替换,再写入这个文件中.

2010年12月29日 11:12
0 0

不明白为什么要同时修改,你可以同时把所有内容写入文件,内容更改次序随意

2010年12月29日 11:09

相关推荐

    java读取excel的每一行并用数据结构进行处理

    在Java编程中,读取Excel文件是常见的任务,特别是在数据处理和分析的场景下。Excel文件通常包含了大量结构化的数据,这些数据可以被映射到各种数据结构中,以便进行进一步的处理。在这个主题中,我们将深入探讨如何...

    java对csv文件进行读写操作

    这里我们创建了一个`CSVWriter`实例,然后向文件`output.csv`写入多行数据。每行数据是一个字符串数组,数组元素之间用逗号分隔。 **4. CSV解析配置** `opencsv`库还提供了丰富的配置选项,例如自定义分隔符、引用...

    java文件操作(增删改查)

    在Java编程语言中,文件操作是一项基础且重要的技能,它涉及到对磁盘上文件和目录的创建、读取、修改和删除等操作。本项目"java文件操作(增删改查)"是基于控制台实现的一个无界面程序,利用Eclipse集成开发环境编写...

    java的注释规范(单行注释、多行注释、分块注释)

    java 注释规范可以分为三种:单行注释、多行注释和分块注释。 单行注释是指使用两个斜杠(//)开始的注释,用于注释一行代码。例如: ```java String userName = null; // 用户名 ``` 多行注释是指使用 /* 和 */ ...

    多行批量字符替换 可替换任何文件里的字符串 特色在多行替换

    批量字符替换的基本原理是通过读取文件内容,查找并定位到需要替换的字符或字符串,然后用预设的新字符或字符串进行替换,最后将修改后的内容写回文件。这个过程可以自动化执行,大大减少了手动操作的时间和错误率。...

    用Java生成exel文件并写入内容

    在Java编程环境中,生成Excel文件并写入内容是一项常见的任务,尤其在数据处理、报表生成或数据分析等场景中。这个给定的压缩包文件提供了一个Java解决方案,包含一个jar包和一个实现具体功能的Java类。以下是关于...

    java Apache poi 对word doc文件进行读写操作

    这个模块使得开发人员能够读取和写入 .doc 文件,而不仅仅是提取文本内容。 `HWPFDocument` 类是 HWPF 模块的核心,它代表了一个 Word .doc 文档。当你创建或打开一个 `HWPFDocument` 对象时,你可以访问文档的各个...

    java代码,给pdf文件加水印

    6. **关闭内容流和保存文档**:最后,记得关闭内容流以确保所有更改都写入文件,然后用`PDDocument.save()`保存修改后的PDF。完成后,别忘了调用`PDDocument.close()`释放资源。 示例代码可能如下所示: ```java ...

    java中文件操作大全

    以上就是Java中进行文件操作的基本方法和注意事项,但文件操作还包括更多内容,例如追加写入、文件读取、文件移动、目录操作、文件过滤等。掌握这些基础操作是编写高效、健壮的Java应用程序的关键。

    多行批量字符替换器 批量替换各种文件里面的字符

    批量替换功能能够极大地提高工作效率,避免了手动逐个文件修改的繁琐。 批量字符替换的核心原理是遍历指定的文件或文件夹,读取文件内容,然后使用特定的查找和替换规则对文本进行操作。这些规则通常包括要查找的...

    delphi android 多行文本居中apk

    如果你的应用需要动态更新文本并保持居中,可以调用`Text`属性来修改文本内容,同时`Gravity`属性会保持之前设定的居中状态。 4. **自适应屏幕尺寸**: 为了确保在不同屏幕尺寸的设备上文本都能正确居中,你可能...

    Java RandomAccessFile 指定位置实现文件读取与写入

    总之,`RandomAccessFile`是Java中处理文件的有力工具,尤其适合需要高效地在文件中定位和修改数据的场合。通过理解其工作原理和关键方法,开发者可以更好地控制文件操作,提高程序的性能和灵活性。

    JAVA使用POI生成Excel文件

    在Java编程环境中,Apache POI库是一个非常实用的工具,它允许开发者读取、创建、修改Microsoft Office格式的文件,包括Excel(XLS和XLSX格式)。这篇博客"JAVA使用POI生成Excel文件"主要介绍了如何利用Apache POI来...

    Java根据ftl模板生成多表格复杂性word文档

    在Java项目中,我们通常会创建一个FTL模板文件,这个文件包含固定的文本结构以及用特定语法表示的变量和控制结构。例如,你可以创建一个`.ftl`文件,其中包含表格的定义,然后在表格中插入动态数据。 当涉及到多...

    java解析excel表格

    此外,Apache POI还支持创建、修改和保存Excel文件,提供了丰富的API来操作单元格样式、公式、图表等内容。 在Eclipse中运行这个示例项目,你需要确保已经将Excel文件路径替换为实际的文件路径,并且正确配置了...

    java Excel文件 poi-bin-3.1-FINAL-20080629

    Java Excel文件处理主要依赖于Apache POI库,这是一个开源项目,专门用于读写Microsoft Office格式的文件,尤其是Excel(.xls)和Excel 2007以上版本的xlsx文件。在给定的“poi-bin-3.1-FINAL-20080629”压缩包中,...

    Java创建和填充PDF表单域方法

    请注意,为了使用Free Spire.PDF for Java库,你需要将对应的jar文件导入到你的Java项目中,通常是在IDE的类路径设置中添加这些库。 通过以上方法,开发者可以创建包含各种表单域的PDF文档,并根据需要填充数据。这...

    java拆分exlce

    总的来说,Java拆分Excel单元格是通过读取、分析和修改Excel文件内容来实现的,借助于`jxl.jar`库,开发者可以方便地对Excel进行各种操作,满足不同业务需求。在处理大量数据时,这样的自动化操作能显著提高工作效率...

    多行字符替换器

    此外,对于编程人员而言,它还能处理如.java、.cpp、.py等源代码文件,帮助开发者快速统一代码风格或者修正特定字符串。 在实际使用过程中,"最好用的字符替换器"提供了用户友好的界面,使得即使是没有编程背景的...

    Java期末复习资料_第1章_Java入门_.pdf

    2. 多行注释:以斜线星号(/*)开始,以星号斜线(*/)结束,中间的所有文字都作为注释内容。 Java编程风格指的是代码编写的规范化约定,这有助于保持代码的一致性和可读性。常见的Java编程风格有: 1. Allmans风格...

Global site tag (gtag.js) - Google Analytics