de-vraag
  • Pytania
  • Tagi
  • Użytkownicy
Powiadomienia
Nagrody
Rejestracja
Po zarejestrowaniu się, będziesz otrzymywać powiadomienia o odpowiedziach i komentarzach do swoich pytań.
Zaloguj się
Brak tłumaczeń pasujących do Twojego wyszukiwania Jeśli masz już konto, zaloguj się, aby sprawdzić nowe powiadomienia.
Za dodane pytania, odpowiedzi i komentarze przewidziane są nagrody.
Więcej
Źródło
Edytuj
 Gjorgji
Gjorgji
Question

Pisanie plików w Node.js

Próbowałem znaleźć sposób na pisanie do pliku podczas korzystania z Node.js, ale bez powodzenia. Jak mogę to zrobić?

1526 2010-03-23T00:25:02+00:00 3
 KARTHIKEYAN.A
KARTHIKEYAN.A
Edytowane pytanie 17. września 2018 в 6:40
Programowanie
file
javascript
node.js
express
fs
Popular videos
Node JS Tutorial for Beginners #9 - Reading & Writing Files (fs)
Node JS Tutorial for Beginners #9 - Reading & Writing Files (fs)
5 lat temu
Reading and Writing Files with Node.js | Node JS Beginners Tutorial
Reading and Writing Files with Node.js | Node JS Beginners Tutorial
9 miesięcy temu
NodeJS Tutorial 11: Filesystem - Writing To Files
NodeJS Tutorial 11: Filesystem - Writing To Files
6 lat temu
Node.js - NPM
Node.js - NPM
2 lata temu
Jak wysłać własny moduł na NPM
Jak wysłać własny moduł na NPM
2 lata temu
Backend - Podstawy w Node.js i Express
Backend - Podstawy w Node.js i Express
1 rok temu
Node.js - kurs w 60 minut
Node.js - kurs w 60 minut
2 lata temu
import, export - czyli jak podzielić projekt JS na wiele plików
import, export - czyli jak podzielić projekt JS na wiele plików
2 lata temu
Jak postawić aplikacje Node.js na serwerze
Jak postawić aplikacje Node.js na serwerze
2 lata temu
Projekt "Notatnik" 1/8 - Backend (node, express)
Projekt "Notatnik" 1/8 - Backend (node, express)
1 rok temu
8 godz kurs programowania #5 Node.js, Express.js, Rest API
8 godz kurs programowania #5 Node.js, Express.js, Rest API
1 rok temu
Tworzenie bota w Lua! #10 Komendy z innych plików
Tworzenie bota w Lua! #10 Komendy z innych plików
6 miesięcy temu
MongoDB + Node.js - kurs w 60 minut
MongoDB + Node.js - kurs w 60 minut
2 lata temu
Moduły w Node.js czyli require(), module.exports oraz node_modules
Moduły w Node.js czyli require(), module.exports oraz node_modules
2 lata temu
Wprowadzenie do programowanie w NodeJS i PixiJS. Serwer HTTP w NodeJS i danych z plików Część 2
Wprowadzenie do programowanie w NodeJS i PixiJS. Serwer HTTP w NodeJS i danych z plików Część 2
1 rok temu
Node.js - Instalacja i pierwszy skrypt
Node.js - Instalacja i pierwszy skrypt
2 lata temu
Wprowadzenie do Express (Framework Node.js)
Wprowadzenie do Express (Framework Node.js)
1 rok temu
Bezpieczeństwo w Node.js (Zbyszek Tenerowicz) - FullStak #11
Bezpieczeństwo w Node.js (Zbyszek Tenerowicz) - FullStak #11
2 lata temu
« Poprzedni
Następny »
To pytanie ma 1 odpowiedź w języku angielskim, aby je przeczytać zaloguj się na swoje konto.
Solution / Answer
Brian McKenna
Brian McKenna
23. marca 2010 в 1:50
2010-03-23T01:50:15+00:00
Więcej
Źródło
Edytuj
#10224790

Jest wiele szczegółów w File System API. Najczęstszym sposobem jest:

const fs = require('fs');

fs.writeFile("/tmp/test", "Hey there!", function(err) {

    if(err) {
        return console.log(err);
    }

    console.log("The file was saved!");
}); 
Mike B.
Mike B.
Edytowana odpowiedź 24. września 2019 в 1:55
2310
0
Gabriel Llamas
Gabriel Llamas
28. kwietnia 2012 в 10:52
2012-04-28T22:52:15+00:00
Więcej
Źródło
Edytuj
#10224794

Obecnie istnieją trzy sposoby zapisu pliku:

  1. fs.write(fd, bufor, offset, length, position, callback)

    Musisz poczekać na callback, aby upewnić się, że bufor został zapisany na dysk. To nie jest buforowane.

  2. fs.writeFile(filename, data, [encoding], callback)

    Wszystkie dane muszą być zapisane w tym samym czasie, nie można wykonywać zapisów sekwencyjnych.

  3. fs.createWriteStream(ścieżka, [opcje])

    Tworzy strumień WriteStream, co jest wygodne, ponieważ nie trzeba czekać na wywołanie zwrotne. Ale znowu, to'nie jest buforowane.

A WriteStream, jak sama nazwa mówi, jest strumieniem. Strumień z definicji jest "buforem" zawierającym dane, które poruszają się w jednym kierunku (źródło ► miejsce docelowe). Ale zapisywalny strumień niekoniecznie jest "buforowany". Strumień jest "buforowany", kiedy piszesz n razy, a w czasie n+1, strumień wysyła bufor do jądra (ponieważ jest pełny i musi zostać przepłukany).

Innymi słowy: "Bufor" jest obiektem. To, czy "jest buforowany" jest właściwością tego obiektu, czy nie.

Jeśli spojrzysz na kod, WriteStream dziedziczy po zapisywalnym obiekcie Stream. Jeśli zwrócisz uwagę, zobaczysz jak one spłukują zawartość; nie mają żadnego systemu buforowania.

Jeśli piszesz ciąg znaków, jest on konwertowany do bufora, a następnie wysyłany do warstwy natywnej i zapisywany na dysk. Podczas pisania ciągów, nie wypełniają one żadnego bufora. Więc, jeśli zrobisz:

write("a")
write("b")
write("c")

You're doing:

fs.write(new Buffer("a"))
fs.write(new Buffer("b"))
fs.write(new Buffer("c"))

To są trzy wywołania do warstwy I/O. Chociaż używasz "buforów", dane nie są buforowane. Buforowany strumień zrobiłby: fs.write(new Buffer ("abc")), jedno wywołanie do warstwy I/O.

Na dzień dzisiejszy w Node.js v0.12 (wersja stabilna ogłoszona 02/06/2015) obsługuje teraz dwie funkcje: cork() oraz. uncork(). Wygląda na to, że te funkcje w końcu pozwolą ci buforować / spłukiwać wywołania zapisu.

Na przykład, w Javie są pewne klasy, które zapewniają buforowane strumienie (BufferedOutputStream, BufferedWriter...). Jeśli napiszesz trzy bajty, będą one przechowywane w buforze (pamięci) zamiast wykonywać wywołanie I/O tylko dla trzech bajtów. Kiedy bufor jest pełny, jego zawartość jest przepłukiwana i zapisywana na dysk. Poprawia to wydajność.

Nie odkrywam niczego, po prostu pamiętam, jak powinien być wykonywany dostęp do dysku.

 bubakazouba
bubakazouba
Edytowana odpowiedź 22. grudnia 2015 в 9:41
513
0
Fredrik Andersson
Fredrik Andersson
5. sierpnia 2011 в 3:28
2011-08-05T15:28:35+00:00
Więcej
Źródło
Edytuj
#10224792

Możesz oczywiście uczynić go nieco bardziej zaawansowanym. Non-blocking, zapisywanie fragmentów, nie zapisywanie całego pliku na raz:

var fs = require('fs');
var stream = fs.createWriteStream("my_file.txt");
stream.once('open', function(fd) {
  stream.write("My first row\n");
  stream.write("My second row\n");
  stream.end();
});
Peter Mortensen
Peter Mortensen
Edytowana odpowiedź 31. sierpnia 2015 в 5:58
243
0
Dodaj pytanie
Kategorie
Wszystkie
Technologia
Kultura / Rekreacja
Życie / Sztuka
Nauka
Profesjonalny
Biznes
Użytkownicy
Wszystkie
Nowy
Popularny
1
Jasur Fozilov
Zarejestrowany 9 godzin temu
2
Zuxriddin Muydinov
Zarejestrowany 1 dzień temu
3
Денис Анненский
Zarejestrowany 3 dni temu
4
365
Zarejestrowany 1 tydzień temu
5
True Image
Zarejestrowany 1 tydzień temu
BG
DA
DE
EL
ES
FI
FR
ID
IT
JA
KO
LT
LV
NL
PL
PT
RU
SK
SL
ZH
© de-vraag 2022
Źródło
stackoverflow.com
na podstawie licencji cc by-sa 3.0 z przypisaniem