먹어서나 node. js 파일을

39, ve been i& 길을 찾기 위해 노력하고 있지만, node. js 파일을 사용할 때 쓸 수 없는 성공을 거두었다. 그렇게 할 수 있습니까?

해결책

1 의 [파일 시스템 API 의] detaiils 아주 많습니다. 가장 일반적인 방법은.

const fs = require('fs');

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

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

    console.log("The file was saved!");
}); 
해설 (16)

현재 세 가지 방법으로 파일을 작성합니다.

  1. ['프스트라이트 (fd, 버퍼, 오프셋된, 길이, 위치, 콜백하는')] [1]

기다릴 수 있도록 필요한 콜백하는 버퍼 기록되는 디스크입니다. # 39 의 it& 버퍼된 없습니다.

  1. ['프스트라이트필레 (파일_이름, 데이터, [인코딩입니다], 콜백하는)'] [2]

동시에 모든 데이터를 저장해야 합니다. 쓰기뿐만 순차인지 수행할 수 없습니다.

  1. ['펠릭스 s.크레이트라이티스트림 (경로, [옵션]')] [3]

['라이티스트림'] 는 [4] # 39, 편리한 되므로, 이는 don& 콜백하는 기다릴 필요가 없다. 하지만, it& # 39, s not 버퍼된.

['라이티스트림'] [4], a 는 이름으로 스트리밍합니다 밝혔습니다. 정의에 의해 "버퍼입니다" 는 한 방향으로 이동하는 redboot*용 데이터 스트림 (소스 대상). 그러나 "버퍼된" 스트리밍합니다 쓸 필요는 없습니다. 스트림) 는 '버퍼된 "when you', 'n + 1 시간, 시 쓰기' n '청계천 report. 버퍼 커널 (같도다라고 it& # 39 의 전체 백업본과 요구사항뿐 플러시됩니다).

  • 다른 words:* "버퍼입니다" 은 객체. 여부를 it "은 버퍼된" 는 해당 객체의 속성.

이 경우 가능한 '에서' 코드, '라이티스트림 쳐다보거라 상속됩니다 스트리밍합니다' 객체에는. 그들이 어떻게 컨텐트에서 플러시합니다 경우 관심을 확인할 수 있습니다. 그들은 모든 버퍼링 시스템이요 don& # 39 없다.

로 쓸 경우 조롱이라면 문자열으로 버퍼입니다 넷윈을 레이어에는 보낸 후 쓰고 디스크입니다. # 39, re 문장열 쓸 때, they& 가득 아니라 모든 것을 의미한다. 그래서 없는 경우.

<! - 모든 언어: &gt js 랭 -;

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

39 you& 하고, re:

fs.write(new Buffer("a"))
fs.write(new Buffer("b"))
fs.write(new Buffer("c"))
  • I / O 레이어에는 이동성이란 3 * 통화. 비록 you& 데이터를 사용하여 # 39, re "버퍼" 버퍼된 않습니다. A 버퍼된 스트리밍합니다 해야한다고. 프스트라이트 (새 버퍼 (&quot abc";)) ',' one call to I / O 레이어에는.

현재 node. js v0.12 () 은 안정화 버전 02/06/2015 에서) 는 이제 다음과 같은 두 가지 기능이 제공됩니다. ['코크 ()'] (http://nodejs.org/docs/v0.11.5/api/stream.html # stream_writable_cork) 와 ['토로하다 ()'] (http://nodejs.org/docs/v0.11.5/api/stream.html # stream_writable_uncork). 이러한 기능을 쓸 수 있는 것으로 보인다) 가 마침내 버퍼링하려면 / 플러시합니다 있다.

예를 들어, 제공하는 자바 가상 머신 (jvm) 에 몇 가지 클래스뿐만 버퍼된 스트림까지 ('부프레더스푸트스트림 부퍼드라이터', ''). 쓰기 3 바이트입니다 버퍼에 있는 경우 이러한 바이트입니다 저장됩니까 (메모리) 는 I / O 매입옵션 그냥 하는 대신 3 바이트입니다. 전체 내용이 저장할 때 버퍼가 플러시된 디스크입니다. 이 경우 성능이 향상됩니다.

39 m not 검색 방법을 기억하는 게 아니고, 그냥 i& 디스크 액세스 수행해야 합니다.

[1]: http://nodejs.org/api/fs.html # fs_fs_write_fd_buffer_offset_length_position_callback [2]: http://nodejs.org/api/fs.html # fs_fs_writefile_filename_data_options_callback [3]: http://nodejs.org/api/fs.html # fs_fs_createwritestream_path_options [4]: https://github.com/joyent/node/blob/master/lib/fs.js # L1623

해설 (5)

물론 좀 더 고급 가능하도록 할 수 있습니다. 비블로킹, 전체 파일을 한 번에 먹어서나 비트와 냥이라구 먹어서나 아닌.

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();
});
해설 (9)
var path = 'public/uploads/file.txt',
buffer = new Buffer("some content\n");

fs.open(path, 'w', function(err, fd) {
    if (err) {
        throw 'error opening file: ' + err;
    }

    fs.write(fd, buffer, 0, buffer.length, null, function(err) {
        if (err) throw 'error writing file: ' + err;
        fs.close(fd, function() {
            console.log('file written');
        })
    });
});
해설 (1)
  • 동기식 쓰기 *

&gt. 프스트라이트필레시누스 (파일, 데이터 [, 옵션뿐])

fs = require('fs');

fs.writeFileSync("synchronous.txt", "synchronous write!")
  • 비동기적입니다 쓰기 *

&gt. 프스트라이트필레 (파일, 데이터 [, 옵션뿐], 콜백하는)

fs = require('fs');

fs.writeFile('asynchronous.txt', 'asynchronous write!', (err) => {
  if (err) throw err;
  console.log('The file has been saved!');
});
  • 여기서 *
file  |  |  |  filename or file descriptor
data  |  | 
options  | 
callback 

프리커 읽을 만한 가치가 있는 파일 시스템 (fs) docs.

해설 (0)

내가 좋아했잖아 색인입니다 ./articles/file-system .

가져다줄래요 통했다.

참조 node. js 파일을 어떻게 써요? .

fs = require('fs');
fs.writeFile('helloworld.txt', 'Hello World!', function (err) {
    if (err) 
        return console.log(err);
    console.log('Wrote Hello World in file helloworld.txt, just check it');
});

콘텐트입니다 헤로월드.t스트:

Hello World!

업데이트: 현재 디렉터리에 쓰기 리눅스 노드입니다 같이 일부 다른 것 같다, 저는 이 의견을 추가 don& t # 39, 만일의 사태에 대비해: 이를 통해 ROOT_APP_PATH 펠릭스 그릴파스린스 (& # 39, .& # 39;), '= 콘솔드로그 (ROOT_APP_PATH), 'afaq 파일이 있는 적혀 있다.

해설 (6)

이 질문에 대한 질문을 받자 그러니까말이야 &quot write"; 하지만, 더 일반적인 뜻으로써 &quot append"; 경우에 따라 사용할 수 있다는 점에서 유용할 수 있는 텍스트 파일로 추가 루프 (나열할지 파일이 방관하겠나). &Quot 사용하여 \n"; 추가할 경우 흐름선 예:


var fs = require('fs');
for (var i=0; i
해설 (0)

이에 대한 답을 날짜 및 제공되는 새로운 방법으로 이 있다.

const fsPromises = require('fs').promises
await fsPromises.writeFile('/path/to/file.txt', 'data to write')

[문서 참조 여기서요 자세한 정보] (https://nodejs.org/api/fs.html # fs_fspromises_writefile_file_data_options)

해설 (6)

39 는 매우 단순한 tpc. 노드입니다 내장 기능 확인, it&, s, s) 의 약자로 ',' 엔드입니다 it& # 39 라는 파일 시스템, 및 기본적으로 노데지스 fs 있는 파일 시스템 모듈을.

그래서 먼저 필요할 수 있는 세르베리에스 파일 다음과 같습니다.

var fs = require('fs');

그러나 나의 우선 '할 수 있는 방법을 쓸 방법은 몇 fs' 에 '를 사용하여 파일 (file)', 이렇게 하면 아펜드필레 덮어쓰기/추가 아웃하기로 doesn& # 39, t 가 있을 때, 그 파일 같은 코드를 생성하시겠습니까 될 수 있다 (아래 참조).

fs.appendFile('myFile.txt', 'Hi Ali!', function (err) {
  if (err) throw err;
  console.log('Thanks, It\'s saved to the file!');
});
해설 (1)
 var fs = require('fs');
 fs.writeFile(path + "\\message.txt", "Hello", function(err){
 if (err) throw err;
  console.log("success");
}); 

예를 들면 다음과 같습니다. 파일 읽기 및 쓰기 다른 파일:

  var fs = require('fs');
    var path = process.cwd();
    fs.readFile(path+"\\from.txt",function(err,data)
                {
                    if(err)
                        console.log(err)
                    else
                        {
                            fs.writeFile(path+"\\to.text",function(erro){
                                if(erro)
                                    console.log("error : "+erro);
                                else
                                    console.log("success");
                            });
                        }
                });
해설 (2)

Fs 사용하여 파일을 쓸 수 있습니다 (파일 시스템) 모듈에서는.

예를 들어보겠습니다 어떻게 그렇게 할 수 있습니다.

<! - begin 스니핏: js 숨기십시오: 거짓값 콘솔: 진정한 바벨. &gt 거짓값 -;

const fs = require('fs');

const writeToFile = (fileName, callback) => {
  fs.open(fileName, 'wx', (error, fileDescriptor) => {
    if (!error && fileDescriptor) {
      // Do something with the file here ...
      fs.writeFile(fileDescriptor, newData, (error) => {
        if (!error) {
          fs.close(fileDescriptor, (error) => {
            if (!error) {
              callback(false);
            } else {
              callback('Error closing the file');
            }
          });
        } else {
          callback('Error writing to new file');
        }
      });
    } else {
      callback('Could not create new file, it may already exists');
    }
  });
};

끝 - &lt 스니핏 >;!

이 코드 구조에 의해 콜백하는 인사이드라면 콜백하는 스맥랜드의 없앨 수도 있습니다 약속 '/' 와 '비동기 우스딩 기다리는' 명령문입니다. 이 발쿰치로 비동기적입니다 코드 구조를 훨씬 더 균등형. 할 수 있다는 [우틸드프로미시피 (원본)] [2] 기능을 편리하게 사용할 수 있습니다. 정보기술 (it) 로 전환할 수 있게 콜백 그렇다. 예를 들면 '와' 기능을 살펴 fs (아래 참조).

<! - begin 스니핏: js 숨기십시오: 거짓값 콘솔: 진정한 바벨. &gt 거짓값 -;

// Dependencies.
const util = require('util');
const fs = require('fs');

// Promisify "error-back" functions.
const fsOpen = util.promisify(fs.open);
const fsWrite = util.promisify(fs.writeFile);
const fsClose = util.promisify(fs.close);

// Now we may create 'async' function with 'await's.
async function doSomethingWithFile(fileName) {
  const fileDescriptor = await fsOpen(fileName, 'wx');

  // Do something with the file here...

  await fsWrite(fileDescriptor, newData);
  await fsClose(fileDescriptor);
}

끝 - &lt 스니핏 >;!

[2]: https://nodejs.org/api/util.html # util_util_promisify_original

해설 (1)

여기서 우리가 사용하는 파일 경로를 찾을 수 없는 아웃하기로 w+ 읽기 / 쓰기 위한 작업이 모두 it 약간만이라도 자동으로 생성된.

fs.open(path, 'w+', function(err, data) {
    if (err) {
        console.log("ERROR !! " + err);
    } else {
        fs.write(data, 'content', 0, 'content length', null, function(err) {
            if (err)
                console.log("ERROR !! " + err);
            fs.close(data, function() {
                console.log('written success');
            })
        });
    }
});

컨텐츠, & # 39 는 사용자가 쓸 수 있는 파일 및 길이는 content.length& # 39;.;

해설 (0)

다음은 샘플링합니다 csv 파일 읽기 및 쓰기 방법을 통해 현지 로컬 csv 파일.

var csvjson = require('csvjson'),
    fs = require('fs'),
    mongodb = require('mongodb'),
    MongoClient = mongodb.MongoClient,
    mongoDSN = 'mongodb://localhost:27017/test',
    collection;

function uploadcsvModule(){
    var data = fs.readFileSync( '/home/limitless/Downloads/orders_sample.csv', { encoding : 'utf8'});
    var importOptions = {
        delimiter : ',', // optional 
        quote     : '"' // optional 
    },ExportOptions = {
        delimiter   : ",",
        wrap        : false
    }
    var myobj = csvjson.toSchemaObject(data, importOptions)
    var exportArr = [], importArr = [];
    myobj.forEach(d=>{
        if(d.orderId==undefined || d.orderId=='') {
            exportArr.push(d)
        } else {
            importArr.push(d)
        }
    })
    var csv = csvjson.toCSV(exportArr, ExportOptions);
    MongoClient.connect(mongoDSN, function(error, db) {
        collection = db.collection("orders")
        collection.insertMany(importArr, function(err,result){
            fs.writeFile('/home/limitless/Downloads/orders_sample1.csv', csv, { encoding : 'utf8'});
            db.close();
        });            
    })
}

uploadcsvModule()
해설 (1)

파일에 의해 다음과 같은 코드를 작성할 수 있습니다. (예:

"' var 데이터 = [{& # 39, test& # 39;: # 39, & # 39, & # 39 123& test2& # 39;:;; 로렘 이프젬 & # 39, & # 39. }]; 펠릭스 s.오픈 (데이터 경로 + & # 39, /data/topplayers.json& # 39, & # 39, wx& # 39, 함수 (오류, 필더스크리프터) { if (&amp! 오류 &; 필더스크리프터) { var 스트린달타 = 제슨.스트린그리피 (데이터). 프스트라이트필레 (필더스크리프터, 스트린달타, 함수 (오류) { if (! 오류) { 펠릭스 s.클로스 (필더스크리프터, 함수 (오류) { if (! 오류) { 콜백하는 (false). } else { 콜백하는 (& # 39, 오류 file& 닫으십시오 # 39;). } }). } else { 콜백하는 (& # 39, 오류 서면으로 file.& # 39;). } }). } }). "'

해설 (1)

&gt. # ['펠릭스 s.크레이트라이티스트림 (경로 [, 옵션뿐])'] (https://nodejs.org/api/fs.html # fs_fs_createwritestream_path_options)

&gt. '옵션' 시작 'a' 로 데이터를 쓸 수 있도록 옵션을 포함할 수도 있습니다 최근 일부 포지셔닝하십시오 파일의 시작. 이 파일 수정을 요구할 수 있습니다 '기' 보다는 '보다는' r+ 교체하십니까 모드 (mode) 'w' 기본. 그 중 하나가 될 수 있는 인코딩입니다 수락됨 [버퍼] (https://nodejs.org/api/buffer.html # buffer_buffer).

&gt. 'True 로 설정된 경우' 에 '& # 39 오트로클로스 (기본 동작), # 39, & # 39 finish& error&' 또는 ',' # 39, 파일을 자동으로 설명자 폐쇄될 예정입니다. '만약' t be false 이면 파일 설명자가 won& # 39 는 오트로클로스 단힌 there& # 39 의 경우에도, 오류가 발생했습니다. # 39 의 책임을 전가하는 것은 application& 닫으십시오 및 smartupdate there& s no. # 39 파일 설명자 유출.

&gt. [레더스트림] 같은 (https://nodejs.org/api/fs.html # fs_class_fs_readstream) '는' fd 지정된 경우, [라이티스트림] (https://nodejs.org/api/fs.html # fs_class_fs_writestream) 가 지정한 파일을 사용할 무시하시겠습니까 '길' 인수와 설명자. # 39, & # 39, 즉, 'no' 행사는 open& 방출된다. fd '차단' 합니다. 비블로킹 'fd 의 전달해야 합니다 [네이소켓] (https://nodejs.org/api/net.html # net_class_net_socket).

&gt. '옵션' 이 경우, 해당 문자열으로 인코딩입니다 지정합니다.

이 후, 판독값 긴 글. 작동하잖아 어떻게 이해해야 합니다. 따라서, 예를 들어 's # 39 here& 크레이트라이티스트림 ()'.

/* The fs.createWriteStream() returns an (WritableStream {aka} internal.Writeable) and we want the encoding as 'utf'-8 */
/* The WriteableStream has the method write() */
fs.createWriteStream('out.txt', 'utf-8')
.write('hello world');
해설 (1)

'' 편리한 파일 관리자 라이브러리를 사용할 수 있습니다.

먼저 고궁박물원) 에서 설치 고궁박물원 편리한 파일 관리자 '설치'

샘플링합니다 업로드입니다 및 파일 삭제

var filemanager = require('easy-file-manager')
var path = "/public"
var filename = "test.jpg"
var data; // buffered image

filemanager.upload(path,filename,data,function(err){
    if (err) console.log(err);
});

filemanager.remove(path,"aa,filename,function(isSuccess){
    if (err) console.log(err);
});
해설 (1)