[Gelöst] NTFS-Zugriffsrechte und temporäre Dateien

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: NTFS-Zugriffsrechte und temporäre Dateien

Beitrag von ts-soft »

Es sollte noch darauf hingewiesen werden, das der *buffer in Procedure FileGetDACL(sFilename.s) bei Erfolg auch freigegeben wird, jedenfalls wenn PB noch länger läuft und die Procedure mehrmals aufgerufen wird. Kann mir nicht vorstellen, das die API das von alleine macht.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Re: NTFS-Zugriffsrechte und temporäre Dateien

Beitrag von GPI »

Nino hat geschrieben:Das habe ich auch überlegt. :-) Dann muss allerdings der komplette Dateiinhalt im Speicher gehalten werden und ich dachte, dass das bei großen Dateien zu Problemen führen kann. Oder kann ich mich darauf verlassen, dass das Betriebssystem sich darum kümmert (und bei Bedarf Inhalte in die Swap-Datei auslagert)?
nö, wozu. Temp-Daten zum lesen öffnen, finale datei zum schreiben - und gleichzeitig lesen und schreiben. zum schluss die Temp löschen
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: NTFS-Zugriffsrechte und temporäre Dateien

Beitrag von Nino »

GPI hat geschrieben:Temp-Daten zum lesen öffnen, finale datei zum schreiben - und gleichzeitig lesen und schreiben. zum schluss die Temp löschen
Nicht jede Datei wird geändert. Das ist vorher nicht bekannt. Erst während das Programm eine Ursprungsdatei liest, stellt es fest ob darin etwas ist was geändert werden soll.

Deshalb mache ich es so: Temp-Daten zum Schreiben öffnen, Ursprungsdatei zum Lesen. Wenn nichts geändert wurde, die Temp-Datei löschen. Ansonsten und wenn kein Fehler aufgetreten ist, die Temp-Datei umbenennen. So wird die Ursprungsdatei nur verändert wenn es nötig ist, und wenn zuvor alles gut gegangen ist.
Benutzeravatar
helpy
Beiträge: 635
Registriert: 29.08.2004 13:29

Re: NTFS-Zugriffsrechte und temporäre Dateien

Beitrag von helpy »

Sind die HTML-Dateien wirklich so groß, dass diese nicht in den Arbeitsspeicher geladen werden können?
Das kann ich mir nicht vorstellen!

HTML-Dateien, die ein paar MByte groß sind ... da braucht das Rendering im Browser ja schon einige Zeit.
"ein paar MByte" können doch leicht in den Arbeitsspeicher geladen werden.

Und sind die HTML-Dateien wirklich so groß, dass das nicht geht, dann sind diese meiner Ansicht nach auch zu groß für einen Browser.
Windows 10
PB Last Final / (Sometimes testing Beta versions)
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: NTFS-Zugriffsrechte und temporäre Dateien

Beitrag von Nino »

helpy hat geschrieben:Sind die HTML-Dateien wirklich so groß, dass diese nicht in den Arbeitsspeicher geladen werden können?
Das kann ich mir nicht vorstellen!
Nein, die HTML-Dateien sind nicht so groß. :-)

Das Problem ist halt zufällig jetzt bei diesem Programm aufgetreten. Demnächst werde ich vor der gleichen Situation stehen bei einem Programm, welches Textdateien bearbeitet, von denen jede eine Größe von mehreren Gigabyte haben kann.
Benutzeravatar
#NULL
Beiträge: 2235
Registriert: 20.04.2006 09:50

Re: NTFS-Zugriffsrechte und temporäre Dateien

Beitrag von #NULL »

..Dann muss allerdings der komplette Dateiinhalt im Speicher gehalten werden ..
wie NicTheQuick und GPI bereits gesagt haben kannst du entweder:

- Original-Datei nach und nach einlesen, und dabei samt Aenderungen in die Temp-Datei schreiben.
- dann statt die Original-Datei zu ersetzen den Inhalt der Temp-Datei nach und nach zurueckschreiben in die Original-Datei ohne diese neu zu erstellen.

Oder du kopierst die Original-Datei vor einfach, liest von der Kopie und schreibst samt Aaenderungen den Inhalt neu in die Original-Datei.
my pb stuff..
Bild..jedenfalls war das mal so.
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: NTFS-Zugriffsrechte und temporäre Dateien

Beitrag von mk-soft »

Dafür gibt es doch unter Windows einen Ordner auf den alle Benutzer zugreifen können.

Code: Alles auswählen

Debug GetUserDirectory(#PB_Directory_AllUserData) + "MyProgram\"
Damit sollte es keine Probleme mit der Berechtigung geben...
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: NTFS-Zugriffsrechte und temporäre Dateien

Beitrag von Nino »

mk-soft hat geschrieben:Dafür gibt es doch unter Windows einen Ordner auf den alle Benutzer zugreifen können.

Code: Alles auswählen

Debug GetUserDirectory(#PB_Directory_AllUserData) + "MyProgram\"
Damit sollte es keine Probleme mit der Berechtigung geben...
Ja. Wenn man allerdings die temporäre Datei dort erstellt, so kann es sein dass sie sich auf einem anderen Laufwerk befindet als die Ursprungsdatei. In dem Fall muss sie anschließend kopiert werden, was länger dauert als verschieben auf dem selben Laufwerk.
Meine Lösung, die temporäre Datei im selben Verzeichnis wie die Ursprungsdatei zu erstellen, ist daher besser -- außer wenn auf diesem Laufwerk kein Platz mehr für die temporäre Datei ist. Und in dem Fall dass der Platz knapp ist, würde GetUserDirectory(#PB_Directory_AllUserData) auch nur dann einen Vorteil bieten, wenn es nicht auch auf dem selben Laufwerk ist.
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Re: NTFS-Zugriffsrechte und temporäre Dateien

Beitrag von GPI »

Wenn du gigabytegroße Dateien hast: Falls Temp auf einen anderen Laufwerk ist, muss PB das eben auch kopieren. Das wird dauern.
Klüger wäre es einfach in Verzeichnis der Original-Datei eine Temp-Datei zu erstellen und je nach bedarf original oder TEMP beibehalten. Dann gibt es solche Probleme schlicht nicht.
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: NTFS-Zugriffsrechte und temporäre Dateien

Beitrag von Nino »

GPI hat geschrieben:Wenn du gigabytegroße Dateien hast: Falls Temp auf einen anderen Laufwerk ist, muss PB das eben auch kopieren. Das wird dauern.
Klüger wäre es einfach in Verzeichnis der Original-Datei eine Temp-Datei zu erstellen und je nach bedarf original oder TEMP beibehalten. Dann gibt es solche Probleme schlicht nicht.
Ich stimme Dir voll und ganz zu. Und genau das mache ich wie gesagt jetzt ja auch, nachdem ich diese Erfahrung mit GetTemporaryDirectory() gemacht habe.

Also nochmal für alle eiligen Leser: Das Problem ist gelöst. :-)
Antworten