最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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)楣ぷ餍枰銓懥诉@個(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)文章

  • Java中joda日期格式化工具的使用示例

    Java中joda日期格式化工具的使用示例

    這篇文章主要介紹了Java中joda日期格式化工具的使用示例,幫助大家更好的利用Java處理時(shí)間,感興趣的朋友可以了解下
    2021-01-01
  • SpringBoot?整合MyBatis+MyBatis-Plus+MyBatisX插件使用

    SpringBoot?整合MyBatis+MyBatis-Plus+MyBatisX插件使用

    本文主要介紹了SpringBoot?整合MyBatis+MyBatis-Plus+MyBatisX插件使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-04-04
  • Spring解決依賴版本不一致報(bào)錯(cuò)問(wèn)題

    Spring解決依賴版本不一致報(bào)錯(cuò)問(wèn)題

    許多同學(xué)經(jīng)常會(huì)遇到依賴版本不一致導(dǎo)致代碼報(bào)錯(cuò),所以這篇文章就給大家詳細(xì)介紹一下Spring解決依賴版本不一致報(bào)錯(cuò)問(wèn)題,需要的朋友跟著小編一起來(lái)看看吧
    2023-07-07
  • SpringBoot事務(wù)失效的八大原因及解決方案

    SpringBoot事務(wù)失效的八大原因及解決方案

    在 Spring Boot 項(xiàng)目開(kāi)發(fā)中,聲明式事務(wù)管理通過(guò) @Transactional 注解提供了極大的便利,但許多開(kāi)發(fā)者都曾遇到過(guò)事務(wù)不生效的困擾,本文將詳細(xì)分析導(dǎo)致 Spring Boot 事務(wù)失效的八大常見(jiàn)情況,并提供相應(yīng)的解決方案,需要的朋友可以參考下
    2025-09-09
  • Java多線程 原子性操作類的使用

    Java多線程 原子性操作類的使用

    這篇文章主要介紹了Java多線程 原子性操作類的使用,在java5以后,我們接觸到了線程原子性操作,也就是在修改時(shí)我們只需要保證它的那個(gè)瞬間是安全的即可,經(jīng)過(guò)相應(yīng)的包裝后可以再處理對(duì)象的并發(fā)修改,本文總結(jié)一下Atomic系列的類的使用方法,下面一起進(jìn)入文章了解詳細(xì)內(nèi)容
    2021-10-10
  • Springboot?引入?Redis?并配置序列化并封裝RedisTemplate?

    Springboot?引入?Redis?并配置序列化并封裝RedisTemplate?

    這篇文章主要介紹了Springboot?引入?Redis?并配置序列化并封裝RedisTemplate。文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • 基于SpringBoot的Dubbo泛化調(diào)用的實(shí)現(xiàn)代碼

    基于SpringBoot的Dubbo泛化調(diào)用的實(shí)現(xiàn)代碼

    這篇文章主要介紹了基于SpringBoot的Dubbo泛化調(diào)用的實(shí)現(xiàn),從泛化調(diào)用實(shí)現(xiàn)的過(guò)程來(lái)看,我們可以對(duì)自己提供所有服務(wù)進(jìn)行測(cè)試,不需要引入調(diào)用的接口,減少代碼的侵入,需要的朋友可以參考下
    2022-04-04
  • Java獲取視頻時(shí)長(zhǎng)、大小的示例

    Java獲取視頻時(shí)長(zhǎng)、大小的示例

    這篇文章主要介紹了Java獲取視頻時(shí)長(zhǎng)、大小的示例,幫助大家利用Java處理視頻,完成需求,感興趣的朋友可以了解下
    2020-11-11
  • Spring Data Envers支持有條件變動(dòng)紀(jì)錄的保存和查詢的方法

    Spring Data Envers支持有條件變動(dòng)紀(jì)錄的保存和查詢的方法

    通過(guò)spring-data-envers可以很容易的實(shí)現(xiàn)數(shù)據(jù)變動(dòng)紀(jì)錄的保存和查詢,本文介紹支持有條件變動(dòng)紀(jì)錄的保存和查詢的方法,通過(guò)spring-data-envers很容易的實(shí)現(xiàn)變動(dòng)紀(jì)錄的保存和查詢,只需要增加幾個(gè)注解就可以,感興趣的朋友跟隨小編一起看看吧
    2023-10-10
  • 一篇文章弄懂Spring MVC的參數(shù)綁定

    一篇文章弄懂Spring MVC的參數(shù)綁定

    這篇文章主要給大家介紹了關(guān)于如何通過(guò)一篇文章弄懂Spring MVC的參數(shù)綁定,文中通過(guò)示例代碼以及圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02

最新評(píng)論

宜君县| 安乡县| 乐昌市| 曲阜市| 博白县| 盐边县| 怀远县| 满城县| 内黄县| 黄大仙区| 阳曲县| 天峨县| 涿州市| 苍山县| 鲜城| 高密市| 泽州县| 晋州市| 南昌县| 阿拉善左旗| 沙田区| 治县。| 扶沟县| 常宁市| 靖江市| 北京市| 天水市| 宜川县| 万山特区| 宜良县| 海口市| 苏尼特右旗| 青浦区| 股票| 阳江市| 莒南县| 神木县| 普格县| 吉水县| 乐至县| 灌南县|