Kann jemand einen Beispielcode zum Lesen und Schreiben einer Datei mit JavaScript geben?
javascript
file-io
user4642212
quelle
quelle
Antworten:
Der Vollständigkeit halber gibt das OP nicht an, dass er dies in einem Browser tun möchte (wenn dies der Fall ist, ist dies im Allgemeinen nicht möglich).
Javascript an sich erlaubt dies jedoch; Dies kann mit serverseitigem Javascript erfolgen.
Weitere Informationen finden Sie in dieser Dokumentation zur Javascript-DateiklasseBearbeiten : Dieser Link führte zu den Sun-Dokumenten, die jetzt von Oracle verschoben wurden.
Um mit der Zeit zu gehen, finden Sie hier die Dokumentation zu node.js für die FileSystem-Klasse: http://nodejs.org/docs/latest/api/fs.html
Bearbeiten (2) : Sie können Dateien jetzt clientseitig mit HTML5 lesen: http://www.html5rocks.com/en/tutorials/file/dndfiles/
quelle
Nein. Browserseitiges Javascript hat keine Berechtigung zum Schreiben auf den Clientcomputer, ohne dass viele Sicherheitsoptionen deaktiviert werden müssen
quelle
This answer is not useful
.Die Zukunft ist da! Die Vorschläge stehen kurz vor dem Abschluss, nicht mehr ActiveX oder Flash oder Java. Jetzt können wir verwenden:
Dateisystem-APIs
Native Drag & Drop-Dateizugriff
Sie können die Datei per Drag & Drop in den Browser oder über ein einfaches Upload-Steuerelement übertragen. Sobald der Benutzer eine Datei ausgewählt hat, können Sie diese mit Javascript lesen: http://www.html5rocks.com/en/tutorials/file/dndfiles/
quelle
Hier ist der Mozilla-Vorschlag
http://www-archive.mozilla.org/js/js-file-object.html
Dies wird mit einem Kompilierungsschalter in Spidermonkey und auch in Adobe Extendedcript implementiert. Zusätzlich (glaube ich) erhalten Sie das File-Objekt in Firefox-Erweiterungen.
rhino hat eine (eher rudementäre) readFile-Funktion https://developer.mozilla.org/en/Rhino_Shell
Für komplexere Dateioperationen in Rhino können Sie die Methoden java.io.File verwenden.
Sie werden jedoch nichts davon im Browser erhalten. Für ähnliche Funktionen in einem Browser können Sie die SQL-Datenbankfunktionen von HTML5, clientseitige Persistenz, Cookies und Flash-Speicherobjekte verwenden.
quelle
Diese Javascript-Funktion bietet dem Benutzer, der dies über den Browser ausführt, ein vollständiges Dialogfeld "Speichern unter". Der Benutzer drückt OK und die Datei wird gespeichert.
Bearbeiten: Der folgende Code funktioniert nur mit dem IE-Browser, da Firefox und Chrome diesen Code als Sicherheitsproblem angesehen und seine Funktion blockiert haben.
Rufen Sie die Funktion auf:
quelle
Wenn Sie JScript (Microsoft Javascript) verwenden, um lokales Scripting mit WSH durchzuführen (NICHT in einem Browser!), Können Sie
Scripting.FileSystemObject
auf das Dateisystem zugreifen.Ich denke, Sie können auf dasselbe Objekt im IE zugreifen, wenn Sie viele Sicherheitseinstellungen deaktivieren, aber das wäre eine sehr, sehr schlechte Idee.
MSDN hier
quelle
hta
Anwendung tun und das löst esDerzeit können Dateien mit den APIs File , FileWriter und FileSystem aus dem Kontext eines Browser-Tabs / -Fensters geschrieben und gelesen werden , obwohl ihre Verwendung einige Einschränkungen aufweist (siehe Ende dieser Antwort).
Aber um Ihre Frage zu beantworten:
Verwenden von BakedGoods *
Datei schreiben:
Datei lesen:
Verwenden der Rohdatei-, FileWriter- und FileSystem-APIs
Datei schreiben:
Datei lesen:
Genau das, wonach Sie gefragt haben, oder? Vielleicht, vielleicht nicht. Die beiden letztgenannten APIs:
Darüber hinaus definiert die FileSystem-Spezifikation keine Richtlinien dafür, wie Verzeichnisstrukturen auf der Festplatte angezeigt werden sollen. In Chromium-basierten Browsern verfügt die Sandbox beispielsweise über ein virtuelles Dateisystem (eine Verzeichnisstruktur, die nicht unbedingt in derselben Form auf der Festplatte vorhanden ist wie beim Zugriff über den Browser), in der die Verzeichnisse und Dateien mit dem erstellt werden APIs werden platziert.
Obwohl Sie möglicherweise in der Lage sind, Dateien mit den APIs in ein System zu schreiben, kann das Auffinden der Dateien ohne die APIs (also ohne die FileSystem-API) eine nicht triviale Angelegenheit sein.
Wenn Sie mit diesen Problemen / Einschränkungen umgehen können, sind diese APIs so ziemlich die einzige native Möglichkeit, das zu tun, was Sie gefragt haben.
Wenn Sie für nicht native Lösungen offen sind, ermöglicht Silverlight auch Datei-E / A von einem Registerkarten- / Fensterwettbewerb über IsolatedStorage . Zur Nutzung dieser Funktion ist jedoch verwalteter Code erforderlich. Eine Lösung, die das Schreiben eines solchen Codes erfordert, geht über den Rahmen dieser Frage hinaus.
Natürlich liegt eine Lösung, die komplementären verwalteten Code verwendet und nur Javascript zum Schreiben übrig lässt, im Rahmen dieser Frage;):
* BakedGoods ist eine Javascript-Bibliothek, die eine einheitliche Schnittstelle erstellt, über die gemeinsame Speichervorgänge in allen nativen und einigen nicht nativen Speichereinrichtungen ausgeführt werden können. Es wird von diesem Kerl hier gepflegt :).
quelle
Für Firefox:
Siehe https://developer.mozilla.org/en-US/docs/Code_snippets/File_I_O
Für andere sehen Sie sich die TiddlyWiki- App an , um zu sehen, wie es funktioniert.
quelle
Im Kontext des Browsers kann Javascript eine benutzerdefinierte Datei LESEN. Weitere Informationen zum Lesen von Dateien mithilfe der Datei-API finden Sie in Eric Bidelmans Blog . Es ist jedoch nicht möglich, dass browserbasiertes Javascript das Dateisystem des lokalen Computers SCHREIBT, ohne einige Sicherheitseinstellungen zu deaktivieren, da es als Sicherheitsbedrohung für jede Website angesehen wird, Ihr lokales Dateisystem willkürlich zu ändern.
Wenn Sie das sagen, gibt es einige Möglichkeiten, dies zu umgehen, je nachdem, was Sie versuchen:
Wenn es sich um Ihre eigene Site handelt, können Sie ein Java-Applet in die Webseite einbetten. Der Besucher muss jedoch Java auf dem lokalen Computer installieren und wird über das Sicherheitsrisiko informiert. Der Besucher muss zulassen, dass das Applet geladen wird. Ein Java-Applet ist wie eine ausführbare Software, die vollständigen Zugriff auf den lokalen Computer hat.
Chrome unterstützt ein Dateisystem, das ein Sandbox-Teil des lokalen Dateisystems ist. Siehe diese Seite für Details. Dies ermöglicht es Ihnen möglicherweise, Dinge vorübergehend lokal zu speichern. Dies wird jedoch von anderen Browsern nicht unterstützt.
Wenn Sie nicht auf den Browser beschränkt sind, verfügt Node.js über eine vollständige Dateisystemschnittstelle. Hier finden Sie die Dokumentation zum Dateisystem . Beachten Sie, dass Node.js nicht nur auf Servern ausgeführt werden kann, sondern auch auf jedem Client-Computer, einschließlich Windows. Der Javascript-Testläufer Karma basiert auf Node.js. Wenn Sie nur in Javascript auf dem lokalen Computer programmieren möchten, ist dies eine Option.
quelle
Um eine Datei zu erstellen, versuchen Sie es
Erstellen Sie Ihr Verzeichnis auf dem Laufwerk C, da Windows gegen das Schreiben aus dem Web geschützt ist, z. B. einen Ordner mit dem Namen "tmp" auf dem Laufwerk C.
quelle
Sie müssen sich an Flash, Java oder Silverlight wenden. Im Fall von Silverlight sehen Sie sich Isolated Storage an . Dadurch können Sie in Dateien auf Ihrem eigenen Spielplatz auf der Festplatte des Benutzers schreiben. Sie können jedoch nicht außerhalb Ihres Spielplatzes schreiben.
quelle
Sie können dies nicht browserübergreifend tun. IE hat Methoden, um "vertrauenswürdigen" Anwendungen zu ermöglichen, ActiveX-Objekte zum Lesen / Schreiben von Dateien zu verwenden, aber das ist es leider.
Wenn Sie Benutzerinformationen speichern möchten, müssen Sie höchstwahrscheinlich Cookies verwenden.
quelle
Bei einem ReactJS-Test schreibt der folgende Code erfolgreich eine Datei:
Die Datei wird in das Verzeichnis geschrieben, das die Tests enthält. Wenn Sie also in eine aktuelle JSON-Datei '* .json' schreiben, wird eine Schleife erstellt!
quelle
Sie können auf der Clientseite keine Datei-E / A mit Javascript ausführen, da dies ein Sicherheitsrisiko darstellt. Sie müssten sie entweder zum Herunterladen und Ausführen einer Exe veranlassen, oder wenn sich die Datei auf Ihrem Server befindet, verwenden Sie AJAX und eine serverseitige Sprache wie PHP, um die E / A auf der Serverseite auszuführen
quelle
Verwenden von JavaScript-Erweiterungen
Verwenden einer Webseite und ActiveX-Objekte
quelle
Hier ist eine Schreiblösung für Chrome v52 + (Benutzer muss noch ein Ziel auswählen ...)
Quelle: StreamSaver.js
Am besten geeignet zum Schreiben großer Datenmengen, die auf der Clientseite generiert wurden.
Ansonsten schlage ich vor, FileSaver.js zum Speichern von Blob / Files zu verwenden
quelle