欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java如何向指定文件操作一段內(nèi)容(增加,刪除均可使用本方法)

 更新時(shí)間:2023年12月16日 10:12:21   作者:木昜楊的書(shū)  
這篇文章主要介紹了Java如何向指定文件操作一段內(nèi)容(增加,刪除均可使用本方法),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Java向指定文件指定內(nèi)容插入需要替換的內(nèi)容

之前查看了許多的博客發(fā)現(xiàn)很少有人提及段落更換的方法

剛好因?yàn)楣ぷ餍枰銓?xiě)了這個(gè)小功能

可以替換掉自己想要替換的一個(gè)片段而不是某一行或者在末尾添加內(nèi)容。

package com.yk.replace;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.RandomAccessFile;

/**
 * RandomAccessFile向指定文件,指定位置插入內(nèi)容
 * 1.先使用File的createTempFile創(chuàng)建一個(gè)臨時(shí)文件
 * 2.將插入以后的文件內(nèi)容(末尾節(jié)點(diǎn)開(kāi)始后的內(nèi)容)保存到臨時(shí)文件中
 * 3.程序重新定位到插入點(diǎn),將要插入的內(nèi)容保存到節(jié)點(diǎn)后
 * 4.這樣就相當(dāng)于完成了文件的拼接
 * 
 * @author yangkai
 */
public class InsertContent {
	public static void insert(String fileName, String startContext, String endContext, String insertContent)
			throws IOException {

		RandomAccessFile raf = null;
		// 創(chuàng)建臨時(shí)文件保存插入點(diǎn)后數(shù)據(jù)
		File tmp = File.createTempFile("tmp", null);
		FileOutputStream tmpout = null;
		FileInputStream tmpin = null;

		// 定位節(jié)點(diǎn)使用,readline方法不能識(shí)別\r\n,因此需要自己添加進(jìn)去,最開(kāi)始因?yàn)檫@個(gè)檢索節(jié)點(diǎn)始終不準(zhǔn)耽誤了很長(zhǎng)時(shí)間
		StringBuffer buffer = new StringBuffer();
		BufferedReader bf = new BufferedReader(new FileReader(fileName));
		String s = null;
		while ((s = bf.readLine()) != null) {// 使用readLine方法,一次讀一行
			buffer.append(s + "\r\n");
		}

		String xml = buffer.toString();

		long posStatr = xml.indexOf(startContext) + startContext.length() + 2;
		long posEnd = xml.indexOf(endContext);

		tmp.deleteOnExit();// jvm退出的時(shí)候刪除臨時(shí)文件
		try {
			raf = new RandomAccessFile(fileName, "rw");
			tmpout = new FileOutputStream(tmp);
			tmpin = new FileInputStream(tmp);
			raf.seek(posEnd);
			// 將插入點(diǎn)后的內(nèi)容讀入臨時(shí)文件中保存
			byte[] bbuf = new byte[64];
			int hasRead = 0;
			while ((hasRead = raf.read(bbuf)) > 0) {
				tmpout.write(bbuf, 0, hasRead);
			}
			// 把文件記錄指針定位到pos
			raf.seek(posStatr);
			raf.write(insertContent.getBytes());
			while ((hasRead = tmpin.read(bbuf)) > 0) {
				raf.write(bbuf, 0, hasRead);
			}

		} finally {
			raf.close();
		}

	}

	public static void main(String[] args) throws IOException {
		insert("filePath","posStart","posEnd", "replaceContext\r\n");
	}

}

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • springboot接口參數(shù)為L(zhǎng)ist的問(wèn)題

    springboot接口參數(shù)為L(zhǎng)ist的問(wèn)題

    這篇文章主要介紹了springboot接口參數(shù)為L(zhǎng)ist的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Mybatis?如何傳入字符串參數(shù),分割并遍歷

    Mybatis?如何傳入字符串參數(shù),分割并遍歷

    這篇文章主要介紹了Mybatis?如何傳入字符串參數(shù),分割并遍歷,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • SpringBoot的依賴管理配置

    SpringBoot的依賴管理配置

    一般來(lái)講SpringBoot項(xiàng)目是不需要指定版本,而SSM項(xiàng)目是需要指定版本,SpringBoot的核心依賴就是spring-boot-starter-parent和spring-boot-starter-web兩個(gè)依賴,關(guān)于這兩個(gè)依賴的相關(guān)介紹具體今天小編給大家介紹下
    2022-07-07
  • Java面試重點(diǎn)中的重點(diǎn)之Elasticsearch核心原理

    Java面試重點(diǎn)中的重點(diǎn)之Elasticsearch核心原理

    ElasticSearch是一個(gè)基于Lucene的搜索引擎,是用Java語(yǔ)言開(kāi)發(fā)的,能夠達(dá)到實(shí)時(shí)搜索,穩(wěn)定,可靠,快速,安裝使用方便,作為Apache許可條款下的開(kāi)放源碼發(fā)布,是一種流行的企業(yè)級(jí)搜索引擎,是最受歡迎的企業(yè)搜索引擎
    2022-01-01
  • 淺析從同步原語(yǔ)看非阻塞同步以及Java中的應(yīng)用

    淺析從同步原語(yǔ)看非阻塞同步以及Java中的應(yīng)用

    非阻塞同步是基于沖突檢測(cè)的樂(lè)觀并發(fā)策略,這種樂(lè)觀的并發(fā)策略使得很多線程不需要因?yàn)楦?jìng)爭(zhēng)失敗直接掛起,這種同步措施稱為非阻塞同步。下面我們就從硬件原語(yǔ)開(kāi)始了解非阻塞同步,并看一看在Java中非阻塞同步的一些應(yīng)用
    2021-06-06
  • 使用sharding-jdbc實(shí)現(xiàn)水平分表的示例代碼

    使用sharding-jdbc實(shí)現(xiàn)水平分表的示例代碼

    本文主要介紹了sharding-jdbc實(shí)現(xiàn)水平分表,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • JavaSE經(jīng)典小練習(xí)項(xiàng)目之拷貝文件夾

    JavaSE經(jīng)典小練習(xí)項(xiàng)目之拷貝文件夾

    文件拷貝是一個(gè)常見(jiàn)的任務(wù),無(wú)論是備份文件,還是將文件從一個(gè)位置復(fù)制到另一個(gè)位置,文件拷貝都是必不可少的,這篇文章主要給大家介紹了關(guān)于JavaSE經(jīng)典小練習(xí)項(xiàng)目之拷貝文件夾的相關(guān)資料,需要的朋友可以參考下
    2023-10-10
  • 一文帶你入門(mén)SpringMVC的配置與使用

    一文帶你入門(mén)SpringMVC的配置與使用

    Spring MVC是Spring Framework的一部分,是基于Java實(shí)現(xiàn)MVC的輕量級(jí)Web框架。本文將通過(guò)一些簡(jiǎn)單示例帶大家掌握SpringMVC的配置與使用,感興趣的可以了解一下
    2022-11-11
  • 解讀spark添加二方包導(dǎo)致依賴沖突排查問(wèn)題

    解讀spark添加二方包導(dǎo)致依賴沖突排查問(wèn)題

    這篇文章主要介紹了spark添加二方包導(dǎo)致依賴沖突排查問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Eclipse中maven異常Updating Maven Project的統(tǒng)一解決方案

    Eclipse中maven異常Updating Maven Project的統(tǒng)一解決方案

    今天小編就為大家分享一篇關(guān)于Eclipse中maven異常Updating Maven Project的統(tǒng)一解決方案,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-12-12

最新評(píng)論