error :"El proceso no tiene acceso al archivo porque está siendo utilizado por otro proceso"
Publicado por jhon (8 intervenciones) el 09/03/2016 17:29:16
hola, estoy aplicando el siguiente codigo para clasificar unos archivos en formatos txt respecto a un valor que tiene registrado en su interior. el problema es que para unos archivos si funciona y para otros sale el error : El proceso no tiene acceso al archivo porque está siendo utilizado por otro proceso. y en realidad no lo estoy usando, ni lo tengo abierto ni nada. entonces no se lo que pasa, podrian ayudarme??
parametros de entrada: direccion de donde se encuentran los archivos txt.
salida= una carpeta llamada "RESULTADOS" en la cual contiene otras carpetas con nombre segun la temperatura que tienen registrados lo archivos txt, es decir, en la carpeta temp_221 contiene archivos con temperatura registrada de 22.1°.
function x=clasificar_temp(dire)
cd (dire);
files = dir('Test*.txt'); % Leemos archivos solo txt
N = length(files); % Cuantos archivos se leyeron (N)
for i=1:N
fid=fopen(files(i).name);
for t=1:2 %llegamos ala linea 2 donde esta canal (ch)
tline=fgetl(fid);
end
trufal=tline(8);
for j=1:4 % leemos hasta la linea 4 donde está la Temp
tline = fgetl(fid);
end
if trufal=='T' % comprueba si el canal 0 esta habilitado.
%for j=1:6 % leemos hasta la linea 6 donde está la Temp
% tline = fgetl(fid); %muestra la sgt linea de lo que hay dentro del txt.
%end
Temp(i) = str2double(tline(51:60));
nombrecar(i)=str2double(tline(51:54));
fclose(fid);
else
%for j=1:6 % leemos hasta la linea 6 donde está la Temp
% tline = fgetl(fid); %muestra la sgt linea de lo que hay dentro del txt.
%disp(tline); %muestra lo que esta dentro del txt
%end
Temp(i) = str2double(tline(72:80));
nombrecar(i)=str2double(tline(72:75));
end
end
%disp (Temp);
%sentencias necesarias para crear las carpetas de temp
[stat,struc] = fileattrib;
PathCurrent = struc.Name;
%clasificar a 21,2 grados y 21.4
for h=1:N
antesnom='temp_';
e=num2str(nombrecar(1,h));
despuesnom=e;
antes=dire;
medio='\Test';
r=files(h).name;
t=length(r);
despues=r(5:t);
antesdirsalida=dire;
mediodirsalida='\RESULTADOS\temp_';
y=num2str(nombrecar(1,h));
despuesdirsalida=y;
direccion=strcat(antes,medio,despues);
direccionsalida=strcat(antesdirsalida,mediodirsalida,despuesdirsalida);
if ((21000000<Temp(1,h)) && ((Temp(1,h)<21300000)))
FolderName = (strcat(antesnom,despuesnom));
PathFolder = [PathCurrent '/RESULTADOS/' FolderName];
mkdir([PathCurrent '/RESULTADOS'], FolderName);
movefile(direccion,direccionsalida)
else
FolderName2 = (strcat(antesnom,despuesnom));
PathFolder = [PathCurrent '/RESULTADOS/' FolderName2];
mkdir([PathCurrent '/RESULTADOS'], FolderName2);
movefile(direccion,direccionsalida)
end
end
adjunto algunos archivos .txt los cuales tienen registrados en su interior distintas variables, pero solo tomamos la temperatura (temp); ahora, si despendiendo si es ch 0 es TRUE se toma la temperatura temp 0 o si ch 0 es FALSE se toma la temperatura temp 1. esta decicion se hace en el if del principio del codigo.
parametros de entrada: direccion de donde se encuentran los archivos txt.
salida= una carpeta llamada "RESULTADOS" en la cual contiene otras carpetas con nombre segun la temperatura que tienen registrados lo archivos txt, es decir, en la carpeta temp_221 contiene archivos con temperatura registrada de 22.1°.
function x=clasificar_temp(dire)
cd (dire);
files = dir('Test*.txt'); % Leemos archivos solo txt
N = length(files); % Cuantos archivos se leyeron (N)
for i=1:N
fid=fopen(files(i).name);
for t=1:2 %llegamos ala linea 2 donde esta canal (ch)
tline=fgetl(fid);
end
trufal=tline(8);
for j=1:4 % leemos hasta la linea 4 donde está la Temp
tline = fgetl(fid);
end
if trufal=='T' % comprueba si el canal 0 esta habilitado.
%for j=1:6 % leemos hasta la linea 6 donde está la Temp
% tline = fgetl(fid); %muestra la sgt linea de lo que hay dentro del txt.
%end
Temp(i) = str2double(tline(51:60));
nombrecar(i)=str2double(tline(51:54));
fclose(fid);
else
%for j=1:6 % leemos hasta la linea 6 donde está la Temp
% tline = fgetl(fid); %muestra la sgt linea de lo que hay dentro del txt.
%disp(tline); %muestra lo que esta dentro del txt
%end
Temp(i) = str2double(tline(72:80));
nombrecar(i)=str2double(tline(72:75));
end
end
%disp (Temp);
%sentencias necesarias para crear las carpetas de temp
[stat,struc] = fileattrib;
PathCurrent = struc.Name;
%clasificar a 21,2 grados y 21.4
for h=1:N
antesnom='temp_';
e=num2str(nombrecar(1,h));
despuesnom=e;
antes=dire;
medio='\Test';
r=files(h).name;
t=length(r);
despues=r(5:t);
antesdirsalida=dire;
mediodirsalida='\RESULTADOS\temp_';
y=num2str(nombrecar(1,h));
despuesdirsalida=y;
direccion=strcat(antes,medio,despues);
direccionsalida=strcat(antesdirsalida,mediodirsalida,despuesdirsalida);
if ((21000000<Temp(1,h)) && ((Temp(1,h)<21300000)))
FolderName = (strcat(antesnom,despuesnom));
PathFolder = [PathCurrent '/RESULTADOS/' FolderName];
mkdir([PathCurrent '/RESULTADOS'], FolderName);
movefile(direccion,direccionsalida)
else
FolderName2 = (strcat(antesnom,despuesnom));
PathFolder = [PathCurrent '/RESULTADOS/' FolderName2];
mkdir([PathCurrent '/RESULTADOS'], FolderName2);
movefile(direccion,direccionsalida)
end
end
adjunto algunos archivos .txt los cuales tienen registrados en su interior distintas variables, pero solo tomamos la temperatura (temp); ahora, si despendiendo si es ch 0 es TRUE se toma la temperatura temp 0 o si ch 0 es FALSE se toma la temperatura temp 1. esta decicion se hace en el if del principio del codigo.
- histo.rar(33,4 KB)
Valora esta pregunta
0