質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Q&A

解決済

1回答

4103閲覧

fs.renameSyncで移送先のファイルがWindowsから認識されない。

777

総合スコア34

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

0グッド

0クリップ

投稿2015/08/20 01:42

編集2015/08/20 04:55

お世話になります。
ご存じの方見えましたら、解決策について
お知恵お貸し下さい。。。

あるログファイルを作って、
時間が来たらローテーション(下層フォルダへ退避)しようと考えています。

node.jsではリネームを使ってやるのが通例のようだったので、
そのようにやってみました。(他にいい方法が見つからなかったです)

表面上動くコードが出来上がったのですが、
移送後のファイルを削除、移動できません。

エクスプローラ上、アイコンのマークが白紙マークになってしまっていて、
「次の場所にはありません。この項目の場所を確認してから再実行してください・・・」とも出ます。

アトムエディタでは移送後のファイルを編集できるのですが、
WINDOWS付属のメモ帳ではファイルが見つかりませんと出ます。

パーミッションの設定なのかなと思い
fs.chmodSyncで0777を指定してみたりもしましたが
ダメでした。

WINDOWS特有の事象なのでしょうか。。。

var fs = require('fs'),
dir_msg = __dirname + ('/logs/m/'),
dir_msg_old = __dirname + ('/logs/m/old/'),
key0 = 0,
key1 = 1,
key2 = 2,
key3 = 3;

// console.log(dir_msg + key + ".log");
// console.log(dir_msg_old + key + ".log ");
fs.writeFileSync(dir_msg + key0 + ".log", "pppppppppppppp");
fs.writeFileSync(dir_msg + key1 + ".log", "");
fs.writeFileSync(dir_msg + key2 + ".log", "");
fs.writeFileSync(dir_msg + key3 + ".log", "");
fs.renameSync(dir_msg + key0 + ".log", dir_msg_old + key0 + ".log ");
fs.chmodSync(dir_msg_old + key0 + ".log ", 0777);

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

まずファイルの作成、移動、削除ができるか以下のソースで試してみてください。
returnをコメントアウトして順に確認してみてください。
なお、質問の書き方ではファイルに追記できておらず0バイトのファイルが出来上がると思います。

javascript

1var fs = require('fs'); 2var old_path = __dirname + '/old.log'; 3var new_path = __dirname + '/new.log'; 4 5fs.writeFileSync(old_path, "pppppppppppppp"); 6return; 7 8// 移動 9fs.rename(old_path, new_path, function (err) { 10 if (err) throw err; 11 console.log('renamed complete'); 12 return; 13 14 // 削除 15 fs.unlink(new_path, function (err) { 16 if (err) throw err; 17 console.log('unlink complete'); 18 }); 19 20});

投稿2015/08/20 03:20

buibui80

総合スコア1033

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

777

2015/08/20 04:36

buibui80さん、ご回答ありがとうございます。 頂いたソースは、正常に実行できました。 作成、移動、削除は出来ているようです。 私の提示させて頂いたコードでも、作成までは出来るのですが、 そこから先が出来ていないようです。 20 Aug 13:23:03 - [nodemon] v1.3.7 20 Aug 13:23:03 - [nodemon] to restart at any time, enter `rs` 20 Aug 13:23:03 - [nodemon] watching: *.* 20 Aug 13:23:03 - [nodemon] starting `node tera.js` renamed complete unlink complete 20 Aug 13:23:03 - [nodemon] clean exit - waiting for changes before restart
buibui80

2015/08/20 05:47

作成・移動・削除は出来ていて、エディタで開けないということですね。 Windowsでの拡張子:logが何と紐付いているかわかりませんので、 一旦拡張子をtxtに変更してみたらどうでしょうか? また、あらかじめエクスプローラー上でテキストファイルを作成しておき、 それにnodeから書き込んでからメモ帳で開け無いか確認してみたり。 Windowsのバグの可能性もあるみたいです。 http://d.hatena.ne.jp/siwon_g/20120801/1343830522 コマンドプロンプト上でファイルのある階層でdirコマンドを実行してファイルがどうなっているか確認してみるのもありかと。
777

2015/08/21 02:56

buibui80さん、ありがとうございます。 お恥ずかしい話なのですが、コードを読み返していて原因がわかりました。 移動先のファイル名が".log "となっており、 拡張子の後に半角スペースが入っておりました。 ご迷惑おかけしましたが、無事解決できました。 ありがとうございました。。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問