2014-10-21 5 views
0

텍스트를 지정된 위치에 기존 파일에 추가하려고합니다. 내 코드를 실행할 때 지정된 위치가 아닌 최종 파일에 새 텍스트가 추가되었습니다. 내가 뭘 잘못 했니?지정된 위치에 텍스트를 기존 파일에 추가하는 방법

fs=openFile "c:/my.txt" mode:"a+" 
skipToString fs ";" 
seek fs (filepos -1) 
format "add new text" to:fs 
close fs 

му.txt 내용

levl_name  # tech_lvl,military_lvl,desert_lvl; 
body  # Column,Pilaster,Plinth,Wall_,Floor_; 
prefix1  # _left_,_right_,_top_,_bottom_; 
prefix2  # _bad_, _good_,_Tall_, _Low_; 

답변

0

음, 참조는 명시 적으로 말한대로 : 파일이 "A"액세스 유형 중 하나를 열 는 '모든 작업이 끝에서 발생 쓰기 파일의 파일 포인터는 seek을 사용하여 위치를 변경할 수 있지만 쓰기 작업을 수행하기 전에 항상 파일의 끝으로 다시 이동합니다. '

또한, 내용을 덮어 쓰게 스트림에 쓰기, 당신은

file = @"c:\my.txt" 

ms = MemStreamMgr.openFile file 
size = ms.size() 
MemStreamMgr.close ms 

fs = openFile file mode:"r+" 
skipToString fs ";" 
pos = filePos fs - 1 
seek fs pos 
previousContent = readChars fs (size - pos) 
seek fs pos 
format "add new text" to:fs 
format previousContent to:fs 
close fs 
같은 것을, 저장, 파일의 끝에 그 위치에서 모든 것을 얻을 것을 다시 편집 및 붙여 넣기를해야 할 것

파일 형식을 변경할 수 있다면 INI/XML 파일 사용을 고려해보십시오. 파일 형식을 사용하는 것이 훨씬 쉽습니다.

1

대체 방법은 stringStream으로 변환하고 거기에서 모든 작업을 수행하고 파일을 덮어 씁니다.

관련 문제