簡體   English   中英

MATLAB同時讀寫同一文件

[英]MATLAB simultaneous read and write the same file

我想同時讀取和寫入相同的文件。 這是一個簡化的代碼:

clc;
close all;
clearvars;

fd = fopen ('abcd.txt','r+'); %opening file abcd.txt given below


    while ~feof(fd)
        nline = fgetl(fd);
        find1 = strfind(nline,'abcd'); %searching for matching string
        chk1 = isempty(find1);
                if(chk1==0) 
                    write = '0000'; %in this case, matching pattern found
                    % then replace that line by 0000 
                    fprintf(fd,'%s \n',write);
                else 
                    continue;
                end


    end

文件abcd.txt

abcde
abcd23
abcd2
abcd355
abcd65

我想在每一行的字符串中找到文本abcd ,並將整個行替換為0000 但是,文本文件abcd.txt不變 該程序不會在文本文件中寫入任何內容。

有人可以說讀每一行並逐行寫一個單獨的文本文件。 但是,這種方法存在問題。 在最初的問題中,不是找到匹配的文本`abcd,而是具有數千個元素的字符串數組。 在那種情況下,我想讀取文件,解析文件以查找匹配的字符串,根據條件替換字符串,轉到下一個迭代以搜索下一個匹配的字符串,依此類推。 因此,在這種方法中,逐行讀取原始文件並同時寫入另一個文件是行不通的。

另一種方法是讀取內存中的整個文件,替換字符串並進行迭代。 但是我不太確定它如何工作。 另一個問題是內存使用情況。

任何意見?

您試圖做的事不可能高效。 0000代替abcde ,這應該在第一行完成,因為您刪除了一個字符,因此將所有剩余的文本都轉發出去。

取而代之的是解決讀取一個文件並寫入第二個文件的問題,然后刪除原始文件並重命名新文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM