本ページには広告が含まれています。
テキストファイルを開きファイルIDを返します。ファイルが存在しない場合は自動で生成されますが、親フォルダーが存在しない場合はエラーが発生します。
- 構文
- return = FOPEN( ファイル名, オープンモード )
- 引数
- ファイル名 (String)必須
- テキストファイル名
- オープンモード (#fopen = F_READ)省略可
- 以下の方法で指定
- F_READ
- 読み専用モード(デフォルト)SJIS、UTF8、UTF16に対応
- F_WRITE
- 書き専用モード(既にファイルがあれば前の情報は消去)
(UNICODEがある場合に UTF8、無い場合にはSJISになる) - F_READ or F_WRITE
- 読み書き両用指定
- F_EXISTS
- ファイル存在チェック(ファイルオープンせずにファイルが存在するかを返す)
(ディレクトリをチェックしたい場合は最後に\を付加)
- F_EXCLUSIVE
- 排他制御(排他制御の読み書き:F_READ or F_WRITE or F_EXCLUSIVE)
- F_TAB
- CSV処理に対しカンマではなくタブを使用
- F_NOCR
- 書き込みにてファイルの最後の改行は付加しない
(F_WRITE or F_NOCR)
F_WRITE8:UTF8、F_WRITE8B:BOM付きUTF8、 F_WRITE16:UTF16、F_WRITE1:SJIS
- 戻り値
ファイルID(Integer型)
オープンできなかった場合は-1(Char型)を返す
F_EXISTS指定時はTRUE(在り)/FALSE(無し)を返す
ファイルを開くのに失敗したとき
以下のようなダイアログが表示されます。存在しないフォルダを指定していないか確認してください。
path: Can't be written in
中断しますか?
使い方
読み専用で開く
ファイルの内容を取得するときに使用します。書き込みはできません。
DIM FID = FOPEN(filename, F_READ)
書き専用で開く
ファイルに書き込むときに使用します。読み取りはできません。
DIM FID = FOPEN(filename, F_WRITE)
読み書きで開く
ファイルの読み書きを行うときに使用します。
DIM FID = FOPEN(filename, F_READ OR F_WRITE)
ファイルが存在するかチェック
DIM bool = FOPEN(filename, F_EXISTS)
フォルダーが存在するかチェック
フォルダーの最後には「\」をつけます。
DIM bool = FOPEN(folderspec, F_EXISTS)
CSVファイルをタブを区切り文字として開く
DIM FID = FOPEN(filename, F_WRITE OR F_TAB)
ファイルの最後で改行しない
DIM FID = FOPEN(filename, F_WRITE OR F_NOCR)
文字コードUTF8で書き込み
DIM FID = FOPEN(filename, F_WRITE8)
文字コードBOMつきUTF8で書き込み
DIM FID = FOPEN(filename, F_WRITE8B)
文字コードUTF16で書き込み
DIM FID = FOPEN(filename, F_WRITE16)
文字コードSJISで書き込み
DIM FID = FOPEN(filename, F_WRITE1)
一時ファイル(テンポラリファイル)で開く
DIM FID = FOPEN("", F_READ OR F_WRITE)
プログラム実行例
フォルダの存在チェック
PRINT FOPEN("D:\Desktop\sample\", F_EXISTS)
結果
True
使用関数
システム起動時間を取得
システムの起動時間をyyyy/mm/dd, hh:nn:ssの形式で取得します。
HASHTBL INFO
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
DIM filename = uniqueFilename(FSO.BuildPath(GET_CUR_DIR, "SYSTEMINFO.csv"))
FID = FOPEN(filename, F_READ OR F_WRITE)
FPUT(FID, DOSCMD("systeminfo /FO CSV"))
FCLOSE(FID)
FID = FOPEN(filename, F_READ OR F_WRITE)
FOR col = 0 TO 33
INFO[FGET(FID, 1, col)] = FGET(FID, 2, col)
NEXT
FCLOSE(FID)
FSO.DeleteFile(filename)
PRINT INFO["システム起動時間"]
結果
2019/12/21, 15:53:56
使用関数
解説
Windowsの稼働時間を取得
Windowsシステムの起動時間から稼働時間を求めます。
結果はd:hh:nn:ssの形式で出力されます。
HASHTBL INFO
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
DIM filename = uniqueFilename(FSO.BuildPath(GET_CUR_DIR, "SYSTEMINFO.csv"))
DIM FID = FOPEN(filename, F_READ OR F_WRITE)
FPUT(FID, DOSCMD("systeminfo /FO CSV"))
FCLOSE(FID)
FID = FOPEN(filename, F_READ OR F_WRITE)
DIM col = 1
WHILE FGET(FID, 1, col) <> ""
INFO[FGET(FID, 1, col)] = FGET(FID, 2, col)
col = col + 1
WEND
FCLOSE(FID)
FSO.DeleteFile(filename)
DIM startupTime = INFO["システム起動時間"]
DIM date1 = dateValue(startupTime) + timeValue(startupTime)
DIM date2 = uwscToSerial(GETTIME())
PRINT INT(date2 - date1) + ":" + text(date2 - date1, "hh:mm:ss")
結果
0:08:16:46
使用関数
解説
テキストファイルの内容を行毎にソートして出力する
DIM FID = FOPEN("D:\Documents\sample.txt", F_READ)
DIM array[-1]
FOR i = 1 TO FGET(FID, F_LINECOUNT)
arrayPush(array, FGET(FiD, i))
NEXT
FCLOSE(FID)
QSORT(array, QSRT_A)
FOR i = 0 TO UBound(array)
PRINT array[i]
NEXT
使用関数
テキストファイルの内容を行毎にソートして書き換える
DIM FID = FOPEN("D:\Documents\sample.txt", F_READ OR F_WRITE)
DIM array[-1]
FOR i = 1 TO FGET(FID, F_LINECOUNT)
arrayPush(array, FGET(FiD, i))
NEXT
QSORT(array, QSRT_A)
FPUT(FID, "", F_ALLTEXT)
FOR i = 0 TO UBound(array)
FPUT(FID, array[i], i + 1)
NEXT
FCLOSE(FID)
使用関数
テキストファイルを行毎に読み上げる
DIM FID = FOPEN("D:\Documents\sample.txt", F_READ)
FOR i = 1 TO FGET(FID, F_LINECOUNT)
FUKIDASI(i)
SPEAK(FGET(FID, i))
SLEEP(1.000)
NEXT
FCLOSE(FID)
使用関数
ファイルが存在するかをチェック
PRINT FOPEN("D:\Desktop\sample.txt", F_EXISTS)
結果
True
使用関数
特定の文字列の行を削除
DIM FID = FOPEN("D:\Documents\sample.txt", F_READ OR F_WRITE)
FOR i = FGET(FID, F_LINECOUNT) TO 1 STEP -1
IF FGET(FID, i) = "aaa" THEN FDELLINE(FID, i)
NEXT
FCLOSE(FID)
使用関数
特定の文字列を含む行を削除
DIM FID = FOPEN("D:\Documents\sample.txt", F_READ OR F_WRITE)
FOR i = FGET(FID, F_LINECOUNT) TO 1 STEP -1
IFB POS("aaa", FGET(FID, i)) <> 0 THEN
FDELLINE(FID, i)
ENDIF
NEXT
FCLOSE(FID)
使用関数
csvファイルをHTMLのテーブルデータにする(csvToHTML)
CSVのデータをHTML(テーブル)に変換します。
クリップボードにcsvファイルのパスをコピーして実行します。
CONST TemporaryFolder = 2
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
DIM Folder = FSO.GetSpecialFolder(TemporaryFolder)
DIM folderspec = Folder.Path
DIM name = FSO.GetTempName
DIM TempPath = FSO.BuildPath(folderspec, name)
DIM path = GETSTR(0)
DIM FID = FOPEN(path, F_READ)
DIM FID2 = FOPEN(TempPath, F_READ OR F_WRITE)
FPUT(FID2, "<table>", F_ALLTEXT)
FOR row = 1 TO FGET(FID, F_LINECOUNT)
DIM col = 1
FPUT(FID2, "<#TAB><tr>", 0)
WHILE FGET(FID, row, col) <> ""
FPUT(FID2, "<#TAB><#TAB><td>" + (FGET(FID, row, col)) + "</td>", 0)
col = col + 1
WEND
FPUT(FID2, "<#TAB></tr>", 0)
NEXT
FPUT(FID2,"</table>", 0)
FCLOSE(FID)
FCLOSE(FID2)
FID = FOPEN(TempPath, F_READ)
SENDSTR(0, FGET(FID, F_ALLTEXT))
PRINT FGET(FID, F_ALLTEXT)
FCLOSE(FID)
使用関数
解説
歌ネットから歌詞を取得してテキストファイルに保存
CONST ssfDesktop = 0
DIM IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.Visible = TRUE
IE.Navigate("https://www.uta-net.com/song/280568/")
BusyWait(IE)
DIM element, elements, name, lyrics
element = IE.document.getElementById("view_kashi")
elements = element.getElementsByClassName("title")
name = TRIM(elements.Item(0).innerText)
element = IE.document.getElementById("kashi_area")
lyrics = element.innerText
IE.Quit
DIM Shell = CREATEOLEOBJ("Shell.Application")
DIM Folder = Shell.NameSpace(ssfDesktop)
DIM path = Folder.Self.Path
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
path = uniqueFilename(FSO.BuildPath(path, name + ".txt"))
DIM FID = FOPEN(path, F_READ OR F_WRITE)
FPUT(FID, lyrics)
FCLOSE(FID)
使用関数
ファイルを開いているプロセスを調べる
SETHOTKEY(VK_ESC, EMPTYPARAM, "forceQuit")
CONST TemporaryFolder = 2
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
WITH FSO
DIM Folder = .GetSpecialFolder(TemporaryFolder)
DIM folderspec = Folder.Path
DIM filename = .GetTempName
DIM path = .BuildPath(folderspec, filename)
ENDWITH
DIM Shell = CREATEOLEOBJ("Shell.Application")
Shell.FileRun()
DIM ID = GETID("ファイル名を指定して実行", "#32770")
SENDSTR(ID, "cmd /c openfiles /query /fo CSV > " + path)
CLKITEM(ID, "OK", CLK_BTN)
SLEEP(0.500)
REPEAT
SLEEP(0.100)
UNTIL GETID("C:\WINDOWS\system32\cmd.exe", "ConsoleWindowClass") = -1
DIM FID = FOPEN(path, F_READ)
TRY
DIM ID2 = GETID("使用中", "OperationStatusWindow")
GETITEM(ID2, ITM_ACCTXT, 1)
DIM str = ALL_ITEM_LIST[1]
DIM sep = IIF(POS("フォルダー", STATUS(ID2, ST_TITLE)) <> 0, "\", "")
DIM msg = "■" + str + "<#CR>"
FOR r = 5 TO FGET(FID, F_LINECOUNT)
IF POS("\" + str + sep, FGET(FID, r, 3)) <> 0 THEN
msg = msg + "ID:" + FGET(FID, r, 1) + ", プロセス名:" + FGET(FID, r, 2) + "<#CR>"
ENDIF
NEXT
FCLOSE(FID)
REPEAT
FUKIDASI(TRIM(msg))
SLEEP(0.100)
UNTIL GETID("使用中", "OperationStatusWindow") = -1
FINALLY
FSO.DeleteFile(path)
ENDTRY
使用関数
解説
一時ファイル
DIM FID = FOPEN("", F_READ OR F_WRITE)
FPUT(FID, data, F_ALLTEXT)
FOR r = 1 TO FGET(FID, F_LINECOUNT)
FOR c = 1 TO 4
PRINT FGET(FID, r, c)
NEXT
NEXT
FCLOSE(FID)
TEXTBLOCK data
12, 22, 45, 61
42, 53, 45, 98
ENDTEXTBLOCK
使用関数
関連記事
- FCLOSE関数 (スクリプト関数)
- テキストファイルを閉じます。
- FDELLINE関数 (スクリプト関数)
- テキストファイルの指定行を削除します。
- FGET関数 (スクリプト関数)
- テキストファイルの読み込みを行います。
- FPUT関数 (スクリプト関数)
- テキストファイルの書き込みを行います。
- DELETEFILE関数 (スクリプト関数)
- テキストファイルを削除します。
- GETDIR関数 (スクリプト関数)
- Folder.CopyHere メソッド (Shell)
- 1つまたは複数のアイテムをフォルダにコピーします。
- Folder.MoveHere メソッド (Shell)
- 1つまたは複数のアイテムをこのフォルダに移動します。
- FileSystemObject オブジェクト
- FSO.DeleteFile メソッド
- 指定したファイルを削除します。