2016-04-09 9 views
0

Ich bin auf Windows und mit diff zwei Textdateien vergleichen. Es funktioniert erfolgreich für kleine Dateien, aber, wenn ich 2 GB-Datei mit einem anderen 2GB anfangen zu vergleichen Datei zeigt es mir:diff: Text-Datei-Berechtigung verweigert

diff: C:/inetpub/wwwroot/webclient/database_sequences/est_mouse_2.txt: Permission denied 

Mein Code:

$OldDatabaseFile = "est_mouse_1"; 
$NewDatabaseFile = "est_mouse_2"; 
shell_exec("C:\\cygwin64\\bin\\bash.exe --login -c 'diff $text_files_path/$OldDatabaseFile.txt $text_files_path/$NewDatabaseFile.txt > $text_files_path/TempDiff_$OldDatabaseFile$NewDatabaseFile.txt 2>&1'"); 

est_mouse_1.txt und est_mouse_2.txt sind von mir erstellt und ich überprüfe Datei-Erlaubnis und Ordner-Erlaubnis, es ist volle Kontrolle. Und alle anderen Textdateien, die ich verglichen habe, sind im selben Ordner und wurden erfolgreich verglichen.

Irgendeine Idee?

+2

Welches Dateisystem verwenden Sie? Beachten Sie, dass für Dateien mit einer Größe über 2 GB und MS-Windows-Systemen schwerwiegende Einschränkungen gelten. – arkascha

+0

@arkascha Wie kann ich es wissen? Ich verwende Windows 7 64bit – sara

+0

Win32 oder Win64? Starten Sie den Code "als Administrator"? – Eugene

Antwort

1

Sie verwenden Cygwin für diese Operation, Cygwins Heap ist erweiterbar. Es beginnt jedoch mit einer festen Größe und Versuche, es zu erweitern, können in Arbeitsspeicher ausgeführt werden, der zuvor von Windows zugewiesen wurde. Heap-Speicher kann bis zur Größe des größten verfügbaren freien Blocks im virtuellen Prozessspeicher (VM) zugewiesen werden. Auf 64-Bit-Systemen führt dies zu einer 4-GB-VM für einen von dieser ausführbaren Datei gestarteten Prozess. Ich denke, dass, warum Sie nicht zwei 2GB-Dateien vergleichen können, stimme ich zu, dass der Fehler ziemlich seltsam, aber erklärt, dass Ihr Zugriff auf den Speicher begrenzt ist. Weitere Informationen finden Sie unter cygwin user guide.

+0

Es war für kleine Textdateien. Dieses Problem tritt auf, wenn ich große Textdateien vergleiche. Mein RAM ist 4 GB. Denkst du, das Problem wird gelöst, wenn ich mein RAM ändere? Ich denke, es ist nicht verwandt, aber warum erscheint es im Falle von großen Dateien? – sara

+0

Nein, ich denke das ist Cygwin Problem. Warum ist es so wichtig für dich, Cygwin zu benutzen? Du erreichst gerade das Cygwin-Maximum, warum es mit kleinen Dateien klappt. – Eugene

+0

Ich benutze es in meinem Abschluss-Projekt. Einer meiner Projektprozesse besteht darin, 2 Textdateien zu vergleichen und Unterschiede zu finden. – sara