亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

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

剛好因為工作需要便寫了這個小功能

可以替換掉自己想要替換的一個片段而不是某一行或者在末尾添加內(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)建一個臨時文件
 * 2.將插入以后的文件內(nèi)容(末尾節(jié)點開始后的內(nèi)容)保存到臨時文件中
 * 3.程序重新定位到插入點,將要插入的內(nèi)容保存到節(jié)點后
 * 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ù)據(jù)
		File tmp = File.createTempFile("tmp", null);
		FileOutputStream tmpout = null;
		FileInputStream tmpin = null;

		// 定位節(jié)點使用,readline方法不能識別\r\n,因此需要自己添加進(jìn)去,最開始因為這個檢索節(jié)點始終不準(zhǔn)耽誤了很長時間
		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退出的時候刪除臨時文件
		try {
			raf = new RandomAccessFile(fileName, "rw");
			tmpout = new FileOutputStream(tmp);
			tmpin = new FileInputStream(tmp);
			raf.seek(posEnd);
			// 將插入點后的內(nèi)容讀入臨時文件中保存
			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é)

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

相關(guān)文章

  • IDEA簡單實現(xiàn)登錄注冊頁面

    IDEA簡單實現(xiàn)登錄注冊頁面

    這篇文章主要介紹了IDEA簡單實現(xiàn)登錄注冊頁面,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • Java SWT庫詳解與安裝指南(最新推薦)

    Java SWT庫詳解與安裝指南(最新推薦)

    這篇文章主要介紹了Java SWT庫詳解與安裝指南,在本章中,我們介紹了如何下載、安裝SWT JAR包,并詳述了在Eclipse以及命令行環(huán)境中配置Java項目類路徑的步驟,需要的朋友可以參考下
    2025-06-06
  • SpringDataElasticsearch與SpEL表達(dá)式實現(xiàn)ES動態(tài)索引

    SpringDataElasticsearch與SpEL表達(dá)式實現(xiàn)ES動態(tài)索引

    這篇文章主要介紹了SpringDataElasticsearch與SpEL表達(dá)式實現(xiàn)ES動態(tài)索引,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下
    2022-09-09
  • Springboot?上傳文件或頭像(MultipartFile、transferTo)

    Springboot?上傳文件或頭像(MultipartFile、transferTo)

    本文主要介紹了Springboot?上傳文件或頭像(MultipartFile、transferTo),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • maven依賴版本沒有按照最短路徑原則生效的解決方案

    maven依賴版本沒有按照最短路徑原則生效的解決方案

    這篇文章主要介紹了maven依賴版本沒有生效的解決方案,幫助大家更好的理解和使用springboot框架,感興趣的朋友可以了解下
    2021-01-01
  • @FeignClient之name,value,url詳解

    @FeignClient之name,value,url詳解

    在FeignClient中,`name`用于指定服務(wù)的名稱,通常與服務(wù)注冊中心中的服務(wù)名關(guān)聯(lián),而`url`用于指定請求的基礎(chǔ)URL,適用于不使用服務(wù)注冊的場景,如果同時配置了`name`和`url`,則`url`會優(yōu)先生效,Feign會直接使用`url`指定的地址
    2024-11-11
  • Go反射底層原理及數(shù)據(jù)結(jié)構(gòu)解析

    Go反射底層原理及數(shù)據(jù)結(jié)構(gòu)解析

    這篇文章主要介紹了Go反射底層原理及數(shù)據(jù)結(jié)構(gòu)解析,反射的實現(xiàn)和interface的組成很相似,都是由“類型”和“數(shù)據(jù)值”構(gòu)成,下面小編分享更多相關(guān)內(nèi)容需要的小伙伴可以參考一下
    2022-06-06
  • 零基礎(chǔ)寫Java知乎爬蟲之抓取知乎答案

    零基礎(chǔ)寫Java知乎爬蟲之抓取知乎答案

    上篇文章我們已經(jīng)能把知乎的問題抓出來了,但是答案還木有抓出來。這一回合,我們就連著把答案也一起從網(wǎng)站中摳出來=。=
    2014-11-11
  • Java JSON轉(zhuǎn)成List結(jié)構(gòu)數(shù)據(jù)

    Java JSON轉(zhuǎn)成List結(jié)構(gòu)數(shù)據(jù)

    這篇文章主要介紹了Java JSON轉(zhuǎn)成List結(jié)構(gòu)數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • java中ConcurrentHashMap的讀操作為什么不需要加鎖

    java中ConcurrentHashMap的讀操作為什么不需要加鎖

    ConcurrentHashMap完全允許多個讀操作并發(fā)進(jìn)行,讀操作并不需要加鎖。所以下面這篇文章主要給大家介紹了關(guān)于java中ConcurrentHashMap的讀操作為什么不需要加鎖的相關(guān)資料,需要的朋友可以參考下
    2018-10-10

最新評論