<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script>
// ファイル選択欄から引き継ぐ関数
function onAddFile(event) {
var files;//ファイルの型を作成
var reader = new FileReader();//ファイルを読み込むクラスの型を作成
// 指定ファイルをファイルの型に入れる
if(event.target.files){// 指定ファイルがあるか確認する
files = event.target.files;//ファイルの型に入れる
}
// ファイルをバイナリ形式で読み込む
if (files[0]){// ファイルがあるか確認する
reader.readAsArrayBuffer(files[0]);//バイナリ形式で読み込む
}
// ファイルが開けたらリトルエンディアンをビッグエンディアンにする
reader.onload = function (event) {// ファイルが開けたらスタートする
// ファイルの読み出し結果をUint8Arrayの型に入れる
var raw = new Uint8Array(reader.result);
// リトルエンディアンを判定する
var bom = raw[0].toString(16) + raw[1].toString(16);//ファイルの一つ目と二つ目のバイトを結合
var isLittleEndian = (bom == "fffe");//結合結果がリトルエンディアンの"fffe"になっているか確認
// リトルエンディアンをビッグエンディアンにする
if (isLittleEndian)// リトルエンディアンならスタートする
{
for( var i=0; i<raw.length; i=i+2)// 最初から最後まで繰り返す
{
var Buffer = raw[i];// 片方のバイトを一時保存バッファに入れる
raw[i] = raw[i+1];// もう片方のバイトを移す
raw[i+1] = Buffer;// 一時保存バッファに入れたバイトを入れる
}
// Uint8Arrayの型をファイルにして保存する
const blob = new Blob([raw], {type: 'text/plain'});// Uint8Arrayの型を一旦Blobの型に変換する
const name = 'test.txt';// ファイル名を設定する
window.navigator.msSaveBlob(blob, name);// 保存する
}
};
}
</script>
</head>
<body >
<!-- /* ファイル選択欄の作成 onchange="onAddFile(event);" で関数に引き継ぐ*/ -->
<input type="file" id="inputfile" onchange="onAddFile(event);" >
</body>
</html>