ページ 11

ファイル場所の相対指定

Posted: 2023年7月19日(水) 08:40
by CAGLIOSTRO
こんにちは。以前に質問をしたカリオストロです。
また質問をさせてください。

現在、

const fs = require('fs');
const fileExists = fs.existsSync(ファイルまでの絶対パス);

でローカル環境内のファイルの存在確認をして、それによりイベント条件分岐をおこなう処理をいれています。
現在はユーザにDドラへディレクトリを作らせ、その絶対ファイルパスをハードコードで指定することになっています。

できれば相対パスでプロジェクト内のimgフォルダにある画像を指定したいのですが、相対パスで指定する方法をご存知の方はいらっしゃるでしょうか。
もしいらっしゃいましたら、ご教示をいただきたく、よろしくお願いいたします。

Re: ファイル場所の相対指定

Posted: 2023年7月19日(水) 10:52
by 剣崎 宗二
ちょっと表現しにくいのですが…
fsを使っているのであれば../ と./を使えば行けると思います。

実行場所のパスがD:\\aaa\bbb\~~.js だったとして、

D:\\aaa\bbb\ccc\target.txt にアクセス → ./ccc/target.txt
D:\\aaa\dd\target.txt にアクセス → ../dd/target.txt

ただ、ツクールの実行場所の基準がexeの場所なのかjsの場所なのかは私には不明なので(この機能を使う必要がなかったので)色々実験してもらうのが良いかもしれません。

Re: ファイル場所の相対指定

Posted: 2023年7月19日(水) 11:43
by CAGLIOSTRO
カレント指定は何回か試したのですが、微妙に上手く行かなかったんですよね……。
いくつかのパターンで再試験をしてみます。

ありがとうございました。

Re: ファイル場所の相対指定

Posted: 2023年7月19日(水) 13:58
by Plasma Dark
fsのパス解決方法はNodeの公式リファレンスに記載があります。
String paths are interpreted as UTF-8 character sequences identifying the absolute or relative filename. Relative paths will be resolved relative to the current working directory as determined by calling process.cwd().
fsを使うということはローカルファイルとして配布するということなので、ワーキングディレクトリは index.html のある場所になるはずです。
imgフォルダにあるファイルの存在確認をするのであれば以下のように書けそうです。

コード: 全て選択

fs.existsSync('./img/AAAA/BBBB.png')
プロジェクトの絶対パスを使いたい場合は process.cwd() を使うと良いと思います。

Re: ファイル場所の相対指定

Posted: 2023年7月19日(水) 17:23
by CAGLIOSTRO
ありがとうございます。次に触れるタイミングで試してみます!

Re: ファイル場所の相対指定

Posted: 2023年7月19日(水) 19:26
by CAGLIOSTRO
行けました! ありがとうございました。