メインコンテンツに移動

メモリカードファイル操作

メモリカードファイル操作(Fileクラス)

メモリカードをファイルクラスで操作できるライブラリです。

使用する場合は、#include <SD.h>を記述して、File fileのようにインスタンス生成してください。

close

概要

ファイルを閉じる。ファイルオブジェクトを使い終わるときに、必ず呼び出してください。

文法

file.close

パラメータ

なし

戻り値

なし

available

概要

読み出せるデータがあるかどうか調べます。

文法

bool file.available()

パラメータ

なし

戻り値

データがあればtrue、なければfalseを返します。

read

概要

ファイルから1バイト読み込みます。

文法

int file.read()

パラメータ

なし

戻り値

データがあればデータを返します。ファイルの終わりに達していたら-1を返します。

write

概要

ファイルにデータや文字列を書き込みます。

文法

file.write(data)
file.write(*buf, len)

パラメータ

data: データや文字列(char*)
buf: 書き込みデータ(unsigned char*)が格納されたバッファ
len: 書き込みたい長さ

戻り値

なし

flush

概要

未書き込みのデータをファイルに書き込みます。

文法

file.flush()

パラメータ

なし

戻り値

なし

position

概要

ファイルからの読み出し位置を取得します。

文法

unsigned long file.position()

パラメータ

なし

戻り値

ファイルの先頭から数えた読み出し位置(バイト単位)。

seek

概要

ファイルからの読み出し位置を移動します。

文法

bool file.seek(unsigned long pos)

パラメータ

pos: ファイルの先頭から数えた読み出し位置(バイト単位)

戻り値

成功したらtrue、失敗したらfalseを返す。

print

概要

ファイルに数値や文字列を書き込みます。

文法

file.print(data)
file.print(data, BASE)

パラメータ

data: 文字列や数値
BASE: 基数(BYTE、BIN、DEC、HEX、OCT)

戻り値

なし

println

概要

ファイルに数値や文字列を改行付きで書き込みます。

文法

file.println(data)
file.println(data, BASE)

パラメータ

data: 文字列や数値
BASE: 基数(BYTE、BIN、DEC、HEX、OCT)

戻り値

なし

size

概要

ファイルのサイズを調べます。

文法

unsigned longfile.size()

パラメータ

なし

戻り値

ファイルのサイズ(バイト単位)

name

概要

開いているファイルの名前を調べます。

文法

char* file.name()

パラメータ

なし

戻り値

ファイル名を表す文字列

isDirectory

概要

開いているファイルオブジェクトが、ファイルかディレクトリか調べます。

文法

bool file.isDirectory()

パラメータ

なし

戻り値

ディレクトリならtrue、ファイルならfalseを返します。

openNextFile

概要

ディレクトリオブジェクトの場合、次のファイルオブジェクトを返します。

文法

File file.openNextFile()

パラメータ

なし

戻り値

次に該当するファイルオブジェクト。該当がなければfalseとして評価されるファイルオブジェクトを返します。

rewindDirectory

概要

ディレクトリの検索を最初に戻します。

文法

void file.rewindDirectory()

パラメータ

なし

戻り値

なし


サンプルプログラム

ファイルクラスを使用してメモリカードにアクセスするプログラムです。


        #include <Arduino.h>
        #include <SD.h>
            
        void setup(){
            Serial.begin(9600);
            while(!Serial.available()); // wait to press key
            Serial.read(); //dummy
                
            if(!SD.begin()){
                Serial.println("Card failed, or not present.");
                while(1);
            }
        }
                
        void loop(){
            File file = SD.open("sample.txt", FILE_WRITE);
            
            if(file){
                //Write
                Serial.println("Success to open sample.txt and write hello.");
                file.println("Hello, my SD");
                file.close();
                    
                //Read
                file = SD.open("sample.txt", FILE_READ);
                Serial.println("Reading file...");
                while(file.available()){
                    Serial.print((char)file.read());
                    delay(50);
                }
                Serial.println();
                    
                //Size
                Serial.print("File Size:");
                Serial.println(file.size());
                file.close();
                digitalWrite(PIN_LED0, 0);
                    
                //Remove
                Serial.println("Remove the file? y/n");
                while(!Serial.available());
                if(Serial.read() == 'y'){
                    SD.remove("sample.txt");
                    Serial.println("sample.txt has been removed");
                }
                delay(400);
            
            } else {
                Serial.println("Failed to open file.");
                digitalWrite(PIN_LED0, 0);
                while(1);
            }
        }