Ноде пружа различите опције за писање у датотеке у вашем систему преко уграђеног фс модул. Ови укључују вритеФиле(), аппендФиле(), и цреатеВритеСтреам().
Као и многи језици, Ноде.јс вам омогућава да изаберете између преписивања постојеће датотеке или додавања њој. Такође би требало да научите о компромисима између писања датотеке у једном потезу и стримовања.
Коришћење вритеФиле()
вритеФиле() је можда најлакши метод који можете користити за писање датотеке у Ноде.
фс.вритеФиле (име датотеке, подаци, повратни позив)
Ево примера који показује како да креирате обичан текстуални фајл користећи вритеФиле(). Наравно, можете креирати друге врсте датотека као што је ЦСВ или ЈСОН.
конст фс = захтевају(„фс“)
фс.вритеФиле("тест.ткт", "Нови садржај", ерр => {
ако (ерр) {
конзола.лог (грешка)
}
});
вритеФиле() подржава асинц/аваит до уместо коришћења повратних позива као у примеру изнад, можете креирати датотеку на следећи начин.
конст фс = захтевају("фс").обећава
асинцфункцијавритеТоФиле() {
покушати {
чекати фс.вритеФиле("тест.ткт", "Нови наставак")
} улов (ерр) {
конзола.лог (ерр);
}
}
напиши у фајл()
Подразумевано, вритеФиле() ради тако што замењује садржај наведене датотеке новим садржајем ако датотека постоји. Међутим, постоје ознаке које можете користити да бисте заменили ову функционалност, као што су:
- р+ - отвара датотеку за читање и писање.
- в+ - отвара датотеку за читање и писање на почетку датотеке
- а - отвара датотеку за писање на крају датотеке.
- а+ - отвара датотеку за читање и писање на крају датотеке.
На пример, можете користити ознаку а+ овако:
конст фс = захтевају(„фс“)
фс.вритеФиле("тест.ткт", "Нови садржај", { застава: "а+" }, ерр => {
ако (ерр) {
конзола.лог (грешка)
}
});
Постоји много других ознака система датотека о којима можете сазнати у Документација чвора за модул фс.
Тхе фс модул такође пружа вритеФилеСинц, тхе синхрона верзија од вритеФиле().
конст фс = захтевају(„фс“)
фс.вритеФилеСинц("тест.ткт", "Нови садржај", { застава: "а+" }, ерр => {
ако (ерр) {
конзола.лог (грешка)
}
});
Коришћење цреатеВритеСтреам()
Лоша страна коришћења вритеФиле() је да морате да ускладиштите сав садржај датотеке одједном што није скалабилно за велике датотеке. цреатеВритеСтреам() међутим, подржава секвенцијално писање. То значи да можете писати један по један комад података у датотеку. Ево општег система за креирање стрима за писање.
фс.цреатеВритеСтреам (путања, опције)
Код испод уписује податке у текстуалну датотеку користећи стреамове
конст фс = захтевају(„фс“)
// креирање стрим за писање
дозволити вритеаблеСтреам = фс.цреатеВритеСтреам("тест.ткт")
// Упиши у датотеку користећи стреам који се може писати
вритеаблеСтреам.врите("Нови садржај");
Ево још једног примера који показује како можете пренети податке у ток за писање. Овај програм уписује сав унос са терминала у датотеку тест.ткт све док је терминал отворен.
конст фс = захтевају(„фс“)
дозволити вритаблеСтреам = фс.цреатеВритеСтреам("тест.ткт");
процесс.стдин.пипе (вритаблеСтреам);
Ако покренете овај програм из командне линије, можете га затворити помоћу Цтрл + д или Цтрл + ц.
Такође можете писати из друге датотеке у стрим за писање. Размотрите следећи пример:
конст фс = захтевају(„фс“)
дозволити реадаблеСтреам = фс.цреатеРеадСтреам("тест.ткт");
дозволити вритаблеСтреам = фс.цреатеВритеСтреам("тест2.ткт");
реадаблеСтреам.он("подаци", функција(цхунк) {
вритаблеСтреам.врите (комад);
});
Креирање читљивог тока датотеке коју желите да копирате омогућава вам да читате њен садржај у деловима. Дакле, за сваки примљени комад, програм ће писати у одредишну датотеку.
Коришћење аппендФиле()
аппендФиле() је једноставан метод додавања садржаја на крај датотеке. Ево примера.
конст фс = захтевају(„фс“)
фс.аппендФиле("тест.ткт", "додати садржај", ерр => {
ако (ерр) {
конзола.еррор (ерр);
}
});
Такође можете користити асинц/аваит.
конст фс = захтевају("фс").обећава
асинцфункцијааппендТоФиле() {
покушати {
чекати фс.аппендФиле("тест.ткт", "додати садржај")
} улов (ерр) {
конзола.лог (ерр);
}
}
аппендТоФиле()
Као вритеФиле(), аппендФиле такође има синхрону верзију:
фс.аппендФилеСинц("тест.ткт", "додати садржај");
Користите стримове за писање великих датотека
Овај чланак говори о неколико приступа писању датотека у Ноде. Иако је вритеФиле() веома једноставан, он је погоднији за мале величине датотека јер не дозвољава секвенцијално уписивање. Ако имате посла са великим датотекама, боље је користити стримове за писање.