2010-12-01 13 views
2

Gibt es eine Möglichkeit, die Daten einer Datei zu lesen, aber weiterhin die Daten auf der Festplatte nach dem Ende der Datei zu lesen? Für normale Datei-I/O könnte ich einfach fread() verwenden, aber natürlich liest das nur bis zum Ende der Datei. Und es könnte nützlich sein, wenn ich hinzufügen, dass ich das auf einem Windows-Computer brauche.Gibt es eine Möglichkeit, HD-Daten nach EOF zu lesen?

All meine Googling für eine Möglichkeit, dies zu tun, ist stattdessen mit Ergebnissen über nicht verwandte Themen in Bezug auf EOF, wie Menschen mit Problemen mit normalen I/O.

Meine Argumentation dafür ist, dass ich versehentlich einen Teil des Textes in einer Textdatei löschte, an der ich arbeitete, und es war ein ganzer Arbeitstag. Ich habe ein paar Dateien zur Dateiwiederherstellung gegooglet, aber es scheint alles um gelöschte Dateien zu gehen, wo mein Problem ist, dass die Datei noch da ist, aber ohne einige ihrer Informationen, und ich hoffe, dass einige dieser Daten immer noch direkt existieren nach dem aktuell markierten Ende der Datei und ist weder an anderer Stelle fragmentiert noch bereits beansprucht oder anderweitig überschrieben. Da ich kein Programm finden kann, das mir dabei hilft, hoffe ich, dass ich schnell etwas dafür machen kann (ich verstehe, dass dies, je nachdem, was damit zu tun hat, nicht so durchführbar ist, wie nur die Arbeit zu wiederholen) Ich hoffe, das ist nicht der Fall.

Soweit ich vorhersehe, obwohl ich vielleicht nicht richtig bin (nicht sicher, weshalb ich um Hilfe frage), gibt es 3 Möglichkeiten.

Worst der drei: Ich muss Windows API-Funktionen nachschlagen, die direkten Zugriff auf die gesamte Festplatte ermöglichen (ähnlich wie seine Funktionen für den Speicher, vielleicht? Denen ich Erfahrung habe) und die ganze Sache nach den Daten scannen Ich habe immer noch Zugriff auf die Datei und schaue einfach weiter, was danach ist.

Zweitens: Ich kann einen Zeiger auf die Datei bekommen, dann muss ich immer noch rohen Zugriff auf HD bekommen, aber zumindest einen Zeiger auf die Datei drin haben?

Beste der drei: Öffnen Sie einfach die Datei für den Schreibzugriff, suchen bis zum Ende, dann schreiben Sie einen Weg hinter EOF, um mehr Platz zu beanspruchen, aber zuerst hoffe, dass Windows die Daten nicht vor der Übergabe reinigt mich, damit ich Mülldaten bekomme, welche die vorherigen Daten an dieser Stelle waren, die tatsächlich das sind, wonach ich suche? Das wäre großartig, wenn es so einfach wäre, aber ich habe Angst, es zu testen, weil ich die Daten verlieren würde, wenn es fehlschlägt, also hoffentlich jemand anderes bereits weiß. Auf dem betreffenden PC wird Vista Home Premium ausgeführt, wenn dies für alle wichtig ist, die die blutigen Details von Windows kennen.

Ist einer dieser drei Punkte plausibel? Ob ja oder nein, ich bin auch offen (und eifrig) für andere Vorschläge, vor allem diejenigen, die besser sind als meine dummen Ideen, und vor allem, wenn sie mit Richtung auf bestimmte Funktionen kommen, um die Arbeit zu erledigen.

Wenn jemand anderes tatsächlich von einem Wiederherstellungsprogramm gehört hat, das nicht nur gelöschte Dateien wiederherstellt, sondern auch tatsächlich für eine solche Situation funktioniert und das kostenlos und vertrauenswürdig ist, funktioniert das auch.

Vielen Dank im Voraus für jede Hilfe.

+0

Ich bin mir nicht sicher, aber [dieser Link] (http://support.microsoft.com/kb/100027) könnte helfen. Es ist ein bisschen alt, aber. –

Antwort

3

Sie sollten ein Dienstprogramm zum Scannen des freien Speicherplatzes einer Festplatte und zum Wiederherstellen von Daten erhalten, z. B. PhotoRec oder foremost. Beachten Sie jedoch, dass die Daten wahrscheinlich bereits überschrieben wurden, wenn Sie das Gerät bereits sehr oft verwendet haben (sogar im Web-Browser, wodurch Dateien in Ihrem Cache erstellt werden). Do not Speichern Sie Ihre Recovery-Tools auf der gleichen Festplatte, oder verwenden Sie den gleichen PC, um sie herunterzuladen; Holen Sie sie von einem anderen Computer und speichern Sie sie auf einem USB-Gerät, dann führen Sie sie von diesem Gerät aus.

Was den konzeptionellen Inhalt Ihrer Frage betrifft, sind Dateien abstrakte Objekte. Es gibt keine Daten wie "exceed", außer (je nach Implementierung) vielleicht bis zum nächsten Vielfachen des Dateisystems/der Festplatte "blocksize". Es ist auch möglich (sehr wahrscheinlich), dass Ihr Editor die Datei "abspeichert", indem er sie abschneidet und alles neu von Anfang an schreibt, was bedeutet, dass es zwischen dem alten und dem neuen Speicher nicht unbedingt eine Entsprechung gibt.

0

Ihre Frage ist nicht sehr sinnvoll - per Definition gibt es nichts in der Datei nach dem EOF. Mit Ihrer weiteren Beschreibung scheint es, dass Sie nach dem letzten Byte, das von der Datei verwendet wird, lesen möchten, was sich auf der Festplatte befindet, was zufälliger Müll (ungenutzter Speicherplatz) oder eine andere Datei sein könnte. In beiden Fällen handelt es sich jedoch nicht um Daten nach dem EOF, sondern nur um Daten auf der Festplatte, die nicht Teil der Datei sind. Es ist sogar möglich, dass es sich um einen anderen Teil derselben Datei handelt, wenn das Dateisystem seine Daten auf diese Weise auslegt - einige Dateisysteme zerstreuen scheinbar willkürlich Blöcke auf der Festplatte und ermitteln, welche Bytes zu welchen Dateien gehören die Metadaten des Dateisystems.

+1

Aus diesem Grund habe ich sichergestellt, dass ich meine Frage "Kann ich Dateidaten nach EOF lesen" nicht betitelte und stattdessen "kann ich HD-Daten nach dem EOF einer Datei lesen kann". Was den Rest betrifft, ja, ich weiß, und ich erwähnte solche Fragen selbst in meiner ursprünglichen Frage (Zitat: Ich hoffe, dass einige dieser Daten immer noch direkt nach dem aktuell markierten Dateiende existieren und weder woanders noch bereits fragmentiert sind behauptet oder anderweitig überschrieben "und auch ich erwähnte, in der Hoffnung, dass, wenn ich Müll Daten erhalten würde, würde es nicht durch das Betriebssystem gereinigt werden und würde stattdessen der vorherige Inhalt der HD sein). – Loduwijk

Verwandte Themen