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

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

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

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

1763閲覧

ファイルをクローズするタイミングがわからない

Hinata_5846

総合スコア10

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2018/03/13 15:36

半角文字が書かれたテキストファイルを16進数に変換してテキストエリアに出力するプログラムです。
ファイルを読み込んだ後、クローズをしなければいけないと思いますが、適切な場所がわかりません。
// fr.Close(); 
と書いているところが、入れてみてところデバッグでエラーになってうまくいかなかったところです。

Javascript

1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> 2 3<html> 4<head> 5<meta http-equiv="Content-Type" content="text/html; charset=Shift-JIS"/> 6<title></title> 7</head> 8<SCRIPT type="text/JavaScript"> 9<!-- 10function read (ele) { 11 if (!ele.files.length) return; 12 13 var file = ele.files[0]; 14 15 var fr = new FileReader(); 16 17 var work = ""; 18 var outTXT = ""; 19 20 fr.onload = function() { 21 // 読み込み結果を一時領域にコピー 22 work = fr.result; 23// fr.Close();  24 // 変換処理 25 for (i=0; i<work.length; i++) { 26 27 // ワーク領域を初期化 28 data2 = ""; 29 30 // ワーク領域にバイナリ形式に変換した文字列を後方に付加 31 data2 += work.charCodeAt(i).toString(16).toUpperCase(); 32 33 // 変換後文字列の後方にワーク領域を付加 34 if(i == 0){ 35 outTXT = data2; 36 }else{ 37 outTXT += data2; 38 } 39 } 40 // 改行から変換されたものは改行のタグに置換 41 outTXT = outTXT.replace(/DA/g,"\n"); 42 outTXT = outTXT.replace(/D/g,"\n"); 43 outTXT = outTXT.replace(/A/g,"\n"); 44 45// fr.Close();  46 47 // 出力 48 document.getElementById('text00').value = outTXT; 49 50 // 領域初期化 51 var work = null; 52 var outTXT = null; 53 delete work; 54 delete outTXT; 55 56 }; 57 fr.readAsText(file); // ファイルをテキストとして読み込む 58// fr.Close();  59} 60</SCRIPT> 61<body> 62<input type="file" style="width:600px; font-size:18px;" onchange="read(this)" /> <br> 63出力↓<br>  <TEXTAREA id="text99" name="text00" rows="25" cols="10" style="font-size:18px;"></TEXTAREA> 64</body> 65</html> 66

よろしくお願いします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

https://developer.mozilla.org/ja/docs/Web/API/FileReader

上記のページの通り、FileReaderにcloseメソッドって無いのでは?

というよりも、FileReaderを使うにあたっては、自分でクローズする必要自体がないと思います。

投稿2018/03/13 16:08

編集2018/03/13 23:30
HayatoKamono

総合スコア2415

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

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

Hinata_5846

2018/03/14 00:25

ありがとうございます。たしかに上記のサイトによるとcloseメソッドはないですね。 一度読み込んだ後に、ページをリロードせずに別のファイルを選んで読み込んだら、出力がされないことがあったので、closeが必要なのかと思っていました。
guest

0

fr.onloadをした時点でロードが完了しているのでcloseしないですね
filereaderはファイルポインタがあるわけでもなく書き込みもないので
いわゆるファイルI/Oとは管理方法が違うと考えればよいのではないでしょうか?
他の言語もたんなるファイルクロール処理だとopen/closeしないことも
多々あるでしょう

投稿2018/03/14 00:27

yambejp

総合スコア114825

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問