1. 程式人生 > >nodejs-操作檔案系統讀取寫入檔案

nodejs-操作檔案系統讀取寫入檔案

我們通過fs這個模組來對檔案系統進行操作,對於檔案系統操作一般都有同步、非同步方法,兩者區別,同步等有返回結果時候,在繼續執行後面的程式碼,非同步是不等返回結果,直接執行後面的程式碼,待有返回結果時候,通過回撥函式來做出處理。一般同步方法函式名在非同步方法名字後面加Sync,如非同步讀取檔案readFile,同步讀取檔案為readFileSync,大多數情況用非同步方法、但是讀取配置檔案要用同步方法。

readFileSync(path,[options])


readFile(path,[options],function(err,data){});

var fs= require("fs");
fs.readFile('../file.txt',function(err,data){
    if(err){
        console.log("bad")
    }else{
        console.log("ok");
        console.log(data);
        console.log(data.toString());
        }
})

若我們非同步讀取兩個檔案,那麼這兩個檔案的結果誰先返回,我們是不知道的,這得看檔案大小,所以我們要想有先後順序的讀取,那麼得在回撥函式中寫讀取第二個檔案

var fs= require("fs");
fs.readFile('../file.txt',function(err,data){
    if(err){
        console.log("bad")
    }else{
        console.log("讀取第一個檔案成功");
        console.log(data.toString());
        fs.readFile('../file2.txt','utf-8',function(err,data){
            if(err){
               console.log("讀取第二個檔案失敗");
            }
            if(data){
                console.log("讀取第2個檔案成功");
                console.log(data);
            }
        })
        }
})

options

flag:檔案的操作情況,r表示這個檔案只讀,w表示寫入檔案,a追加檔案(常用的三個)

encoding:讀取檔案用的編碼,utf-8,base64,ascii我們不指定編碼,那麼返回的data為一個buffer

var fs= require("fs");
fs.readFile('../file.txt',{flag:'r+',encoding:'utf-8'},function(err,data){
    if(err){
        console.log("bad")
    }else{
        console.log("讀取第一個檔案成功");
        console.log(data);
        fs.readFile('../file2.txt','utf-8',function(err,data){
            if(err){
               console.log("讀取第二個檔案失敗");
            }
            if(data){
                console.log("讀取第2個檔案成功");
                console.log(data);
            }
        })
        }
})

writeFile(filename,data,[options],callback)

wrtieFileSync(filename,data,[options])

filename:要寫入的檔案

data:寫入檔案的資料可以是字串,可以是buffer

options:flag:對寫入檔案的操作預設為w,encoding:編碼,mode:許可權

callback:回撥函式

var fs = require("fs");
var data="宋茂林是好人";
fs.writeFile('./wfile.txt',data,{flag:'w',encoding:'utf-8',mode:'0666'},function(err){
     if(err){
         console.log("檔案寫入失敗")
     }else{
         console.log("檔案寫入成功");

     }

})

該檔案是程式建立的 原本沒有


var fs = require("fs");
var data="宋茂林是好人-追加";
fs.writeFile('./wfile.txt',data,{flag:'a',encoding:'utf-8',mode:'0666'},function(err){
     if(err){
         console.log("檔案寫入失敗")
     }else{
         console.log("檔案追加成功");

     }

})

readFile 、writeFile 同時使用

讀取一張圖片,之後寫入到另一張圖片

var fs =require("fs");
fs.readFile('./1.png','base64',function(err,data){
    if(err){
        console.log("取圖片1失敗");
    }else{
        fs.writeFile('./2.png',data,'base64',function(err){
           console.log("圖片2寫入成功");
        })
    }
})

writeFile(filename,data,{flag:'a'},callback)與appendFile一致

var fs = require("fs");
var data="宋茂林是好人-追加appendFile";
fs.appendFile('./wfile.txt',data,function(err){
     if(err){
         console.log("檔案寫入失敗")
     }else{
         console.log("檔案追加成功");

     }

})



從指定位置開始讀取檔案

fs.open fs.read結合實現從指定位置讀取檔案

fs.open(filename,options,[mode],callback)

callback(err,fd)

var fs =require("fs");
fs.open('./wfile.txt','r','0666',function(err,fd){
    if(err){
       console.log("開啟失敗");
    }else{
       console.log(fd);
    }
})

fs.read(fd,buffer,offset,length,pasition,callback)

fd:ope方發返回的檔案描述符號

buffer:讀取的檔案寫到那個快取區中

offset:從快取區中那個位元組開始寫入

length:寫入多長的位元組,

pasitong:檔案指定位置處開始寫入快取區

var fs =require("fs");
fs.open('./wfile.txt','r','0666',function(err,fd){
    if(err){
       console.log("開啟失敗");
    }else{
       var buf=new Buffer(128);
       console.log(buf)
       fs.read(fd,buf,1,30,0,function(err,bytesRead,buf){
           if(err){
               console.log("指定位置讀取檔案失敗");
           }else{
               console.log(bytesRead);
               console.log(buf);
           }
       })
    }
})

var bytesRead=readSync(fd,buffer,offset,length,position)

指定位置寫資料

fs.open()yu sf.write(fd,buffer,offset,length,position, callback)

var fs=require("fs");             

//這是追加   ‘w’ 是替換原來的檔案內容 
fs.open('./wfile.txt','a','0666',function(err,fd){
    if(err){
       console.log("開啟檔案失敗");
    }else{
       var buffer=new Buffer("小鳥");
       console.log(buffer.length);
       fs.write(fd,buffer,0,buffer.length,0,function(err,written,buffer){
           if(err){
              console.log("指定位置寫入檔案失敗");
           }else{
              console.log(written);
              console.log(buffer.toString());
           }
           
       })

     fs.fsync(fd);
       fs.close(fd);   

}
})

fs.fsync(fd)該方法吧快取區的資料同步到檔案中

fs.close(fd)關閉檔案

相關推薦

nodejs-操作檔案系統讀取寫入檔案

我們通過fs這個模組來對檔案系統進行操作,對於檔案系統操作一般都有同步、非同步方法,兩者區別,同步等有返回結果時候,在繼續執行後面的程式碼,非同步是不等返回結果,直接執行後面的程式碼,待有返回結果時候,通過回撥函式來做出處理。一般同步方法函式名在非同步方法名字後面加Sync

關於Python中讀取寫入檔案並進行檔案與使用者互動的操作

一、提前知識點 在python中是同樣和其他語言一樣可以進行檔案的讀取寫入操作,值得注意的是,Python中開啟檔案讀取的方式有幾種,分別是以下幾種: 1 f = open('username.txt') 2 first_line = f.readline() 3 print('fi

Linux高階程式設計基礎——檔案系統程式設計之檔案寫入操作

檔案系統程式設計之檔案寫入操作——實驗題 //編寫程式碼,完成以下功能: //1.建立檔案file1,寫入字串“abcdefghijklmn”; //2.建立檔案file2,寫入字串“ABCDEFGHIJKLMN”; //3.讀取file1中的內容,寫入file2,使file2中的字串內容為“a

0018.scala檔案讀取寫入操作程式碼

object Source extends scala.AnyRef {   val DefaultBufSize : scala.Int = { /* compiled code */ }   def stdin : scala.io.BufferedSource = { /* compiled cod

DataFrame讀取寫入檔案的方法

DataFrame有非常豐富的IO方法,比如DataFrame讀寫csv檔案excel檔案等等,操作很簡單。下面在程式碼中標記出來一些常用的讀寫操作方法,需要的時候查詢一下該方法就可以了。 import pandas as pd from pandas import Series,

FileInputStream讀取檔案&FileOutputStream寫入檔案

FileInputStream讀取檔案&FileOutputStream寫入檔案 概念摘自:http://jingyan.baidu.com/article/5552ef473ab5f2518ffbc98e.html  Java的流式輸入輸出建立在4個抽象類的基礎上:Inp

Java 讀取寫入檔案亂碼問題解決

Java 讀取寫入檔案亂碼問題解決 寫檔案 讀檔案 寫檔案 File f = new File(fileName); if (!f.exists()) {

Mac自帶系統讀取NTFS檔案系統

將OS X系統下面自帶的mouts_ntfs預設載入方式從只讀改為讀寫。 使用root方式進行下面操作(切記明確每一個步驟,知道自己在做什麼,否則很容易摧毀系統)。 1. cd /sbin 2 mv mount_ntfs mount_ntfs_origin 3. vi mount_n

JAVA核心技術I---JAVA基礎知識(檔案系統及java檔案基本操作

一:檔案概述 檔案系統是由OS(作業系統)管理的 檔案系統和Java程序是平行的,是兩套系統 檔案系統是由資料夾和檔案遞迴組合而成 檔案目錄分隔符 –Linux/Unix 用/隔開 –Windows用\隔開,涉及到轉義,在程式中需用/或\\代替 檔案包括檔案裡面的內容和檔案基本屬性 檔案

EXCEL 讀取 寫入檔案

//讀取 public  void readInexcel(){Workbook book;try {book = Workbook.getWorkbook(new File("d:/TEST.xls"));List<String>list=new Array

讀取檔案流並寫入檔案

Stream stream = File.OpenRead(Server.MapPath("0.jpg")); long len = stream.Length; byte[] buff = new byte[len]; s

java配置檔案讀取寫入的解決方案(getResourceAsStream的用法)

1,首先,Java中的getResourceAsStream有以下幾種:1. Class.getResourceAsStream(String path) : path 不以’/'開頭時預設是從此類所在

Java 按位讀取寫入檔案

在實現Huffman樹時,壓縮和解壓需要從檔案中按位讀取,即一次只讀一個位或者寫一個位。 《演算法(第四版)》中提供了一種實現方法,StdIn類和StdOut類,豁然開朗。 按位讀取 方法: 1. 開闢一個緩衝區int buffer,用於儲存位,並記

java api 讀取hadoop中hdfs檔案系統內的檔案

hadoop與hdfs需要自己安裝,確保檔案存在於hdfs 只有一個main方法 Test.java import org.apache.hadoop.conf.Configuration;

Java 按行讀取檔案按行寫入檔案並以空格分割字串

首先是按行讀取字串 import java.io.BufferedReader; import java.io.File; import java.io.FileReader; public c

Android讀寫檔案 獲取檔案讀取寫入資料

一、       從 resource 中的 raw 資料夾中獲取檔案並讀取資料(資原始檔只能讀不能寫) String res = "";  try{  InputStream in = getResources().openRawResource(R.raw.

java讀取寫入檔案幾種方式效率比較

public class ReadTxtJson {public static String readTxtFile(String FileName) throws Exception {BufferedInputStream bufferedInputStream = n

1、比較說明FAT檔案系統和NTFS檔案系統的特點

答:NTFS檔案系統的特性:(1)提供檔案和資料夾安全性   (2)可使用長英文名  (3)支援加密  (4)高可靠性  (5)壞簇對映  (6)支援對分割槽,資料夾和檔案的壓縮  (7)更高效的磁碟空間管理  (8)支援磁碟配額管理 &n

Linux高階程式設計基礎——檔案系統程式設計之檔案型別資訊

/*檔案系統程式設計之檔案型別資訊——實驗題/ //編寫程式實現以下功能: //1.輸入檔名稱,能夠判斷檔案型別,判斷實際使用者對該檔案具有哪些存取許可權; //2.要求打印出檔案型別資訊,inode節點編號,連結數目,使用者id,組id,檔案大小資訊; //3.修改檔案的許可權為當前使

Linux高階程式設計基礎——檔案系統程式設計之檔案描述符

檔案系統程式設計之檔案描述符——實驗題 /*編寫程式碼,完成以下功能: 1.建立新檔案,該檔案具有使用者讀寫許可權。 2.採用dup/dup2/fcntl複製一個新的檔案描述符,通過新檔案描述符向檔案寫入“class_name”字串; 3.通過原有的檔案描述符讀取檔案中的內容,並且列印顯示;*/