<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; JS: Проверка отсутствия в txt-файле информации]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=9785</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=9785&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «JS: Проверка отсутствия в txt-файле информации».]]></description>
		<lastBuildDate>Sun, 13 Jul 2014 16:54:06 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: JS: Проверка отсутствия в txt-файле информации]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=84743#p84743</link>
			<description><![CDATA[<p><strong>im2002</strong>, тему я закрыл по причине её &quot;спамо-трольного&quot; развития и нарушения пункта правил <strong>4.3, 4.5, 4.10, 4.11</strong> и многих других.</p><p><a href="http://forum.script-coding.com/rules.html#4.3.">Ссылка на перечисленные правила.</a> Рекомендую почитать.</p><p>Вы задали вопрос: &quot;Есть ли возможность на JS как-то проверить содержит ли текстовый файл какую-либо информацию, либо он пустой?&quot;. Вопрос подразумевает ответ &quot;да&quot; или &quot;нет&quot;. Я ответил на Ваш вопрос утвердительно. Вопрос задан, ответ получен. Засорение форума однотипными вопросами, которые многократно обсуждались здесь и на просторах интернета, да и ответы на которые находятся за 5 секунд в поисковике, считаю проявлением неуважения к его участникам и моя прямая обязанность, как модератора - не позволять этого делать пользователям. Заметьте - тему удалять не стал, так как предположил, что она может получить развитие, если другие модераторы и руководство пожелает.</p>]]></description>
			<author><![CDATA[null@example.com (Xameleon)]]></author>
			<pubDate>Sun, 13 Jul 2014 16:54:06 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=84743#p84743</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS: Проверка отсутствия в txt-файле информации]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=84636#p84636</link>
			<description><![CDATA[<p>Консольное приложение делает вывод в текстовый файл (когда есть что выводить), я конечно использовал св-во size объекта file на сравнение со значением &quot;0&quot;, но как-то всё очень просто показалось...&nbsp; подумал, что может какие &quot;подводные камни&quot; могут быть?! Вот и открыл тему... сожалею, что в первом посте не привел код на сравнение размера файла со значением &quot;0&quot; и это вызвало такие эмоциональные ответы у первого отвечающего, что он даже спешно закрыл тему, наверное, боялся ответов с моей стороны... ну да бог с ним... по обсуждению понял, что это вообщем единственный метод, поэтому, всем спасибо, тема закрыта.</p>]]></description>
			<author><![CDATA[null@example.com (im2002)]]></author>
			<pubDate>Tue, 08 Jul 2014 17:51:40 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=84636#p84636</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS: Проверка отсутствия в txt-файле информации]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=84631#p84631</link>
			<description><![CDATA[<div class="quotebox"><cite>JSman пишет:</cite><blockquote><p>alexii, ну как с Вами не согласиться? Абсолютно верно. Я просто человеку подсказку дал, а он может подумать над подводными камнями.</p></blockquote></div><p>Да нет, я просто рассуждаю. Нам ведь неведомо, что скрывается под авторским определением «пустой текстовый файл». Я потому и тему открыл, дабы он мог уточнить, как сие понимать.</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Tue, 08 Jul 2014 15:35:07 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=84631#p84631</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS: Проверка отсутствия в txt-файле информации]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=84630#p84630</link>
			<description><![CDATA[<p>Ну, если уж совсем извратиться по определению маркеров кодировки файлов, то получим такое. :-)</p><div class="codebox"><pre><code>
var GlobalObject = this;
var FSO = fso = new ActiveXObject(&quot;Scripting.FileSystemObject&quot;);
var WshShell = new ActiveXObject(&quot;WScript.Shell&quot;);

Function.prototype.GetResource = function(ResourceName) {
    if (!this.Resources) {
        var UnNamedResourceIndex = 0,
            _this = this;
        this.Resources = {};

        function f(match, resType, Content) {
            _this.Resources[(resType == &quot;[[&quot;) ? UnNamedResourceIndex++:resType.slice(1, -1)] = Content;
        }
        this.toString().replace(/\/\*(\[(?:[^\[]+)?\[)((?:[\r\n]|.)*?)\]\]\*\//gi, f);
    }
    return this.Resources[ResourceName];
}

function Resourses() {
    /*[vbs[
Function [_MidB](v, s, l):[_MidB]=MidB(v, s+1, l):End Function
Function [_Asc](v):[_Asc]=Asc(v):End Function
Function [_Chr](v):[_Chr]=Chr(v):End Function
Function [_VarType](v):[_VarType]=VarType(v):End Function
Function [_TypeName](v):[_TypeName]=TypeName(v):End Function
Function [_ChrB](v):[_ChrB]=ChrB(v):End Function
Function [_AscB](v):[_AscB]=AscB(v):End Function
Function [_LeftB](v, l):[_LeftB]=LeftB(v, l):End Function
Function [_RightB](v, l):[_RightB]=RightB(v, l):End Function
Function [_InstrB](start, stringtosearch, stringtofind, comparemode):[_InstrB]=InstrB(start, stringtosearch, stringtofind, comparemode):End Function

Sub ConvertBinaryToJSArray(arrByteArray, js_arr)
Dim i
For i = 1 To LenB(arrByteArray)
    js_arr.push(AscB(MidB(arrByteArray, i, 1)))
Next
End Sub
]]*/
}

var VBSEngine = new ActiveXObject(&#039;ScriptControl&#039;);
VBSEngine.Language = &#039;VBScript&#039;;
VBSEngine.AddCode(Resourses.GetResource(&quot;vbs&quot;));

WshShell.CurrentDirectory = GetScriptDir();

Array.prototype.map = function(mapper, that) {
    var other = new Array(this.length);
    for (var i = 0, n = this.length; i &lt; n; i++)
    other[i] = mapper.call(that, this[i], i, this);
    return other;
}

function BinaryToArray(binary) {
    var ar = [];
    VBSEngine.CodeObject.ConvertBinaryToJSArray(binary, ar);
    return ar;
}

function TypeOf(o) {
    var type = typeof o;
    if (type != &quot;object&quot; &amp;&amp; type != &quot;unknown&quot;) return type;
    if (o === null || o === undefined) return &quot;empty&quot;;
    if (Object.prototype.toString.call(o) === &#039;[object Array]&#039;) return &quot;array&quot;;
    if (Object.prototype.toString.call(o) === &#039;[object Number]&#039;) return &quot;number&quot;;
    if (Object.prototype.toString.call(o) === &#039;[object String]&#039;) return &quot;string&quot;;
    if (VBSEngine.CodeObject._VarType(o) == (8192 + 17)) return &quot;bytearray&quot;;
    return type;
}

function Exit() {
    if (this.WScript) WScript.Quit();
    if (this.window) window.close();
}

function MsgBox(strText, strTitle, nType) {
    return WshShell.Popup(strText, 0, strTitle, nType);
}

function GetScriptDir() {
    return GetScriptFullPath().replace(/\\+[^\\]+$/g, &quot;&quot;);
}

function GetScriptFullPath() {
    if (this.location &amp;&amp; this.location.href) return location.href.replace(/^.+\/\/\//, &quot;&quot;).replace(/\//g, &quot;\\&quot;);
    if (this.WScript) return WScript.ScriptFullName;
    return &quot;&quot;;
}

function StringToASCIIArray(string, start, end) {
    start = start || 0;
    end = end || string.length;
    string = string.slice(start, end);
    return string.split(&quot;&quot;).map(function a(s) {
        return Asc(s);
    })
}

function Asc(str) {
    return VBSEngine.CodeObject._Asc(str);
}

function Hex(expression, length) {
    var res = expression.toString(16);
    length = Math.max(length || 0, res.length);
    return new Array(length + 1).join(&quot;0&quot;).replace(new RegExp(&quot;.{&quot; + res.length + &quot;}$&quot;), res).toUpperCase();
}

function Bin(expression) {
    var res = expression.toString(2);
    var length = Math.floor(res.length / 8) + ((res.length % 8 &gt; 0) ? 1 : 0);
    length *= 8;
    return new Array(length + 1).join(&quot;0&quot;).replace(new RegExp(&quot;.{&quot; + res.length + &quot;}$&quot;), res).toUpperCase();
}

function FileGetSize(path) {
    try {
        return FSO.GetFile(path).Size;
    } catch(e) {
        return 0;
    }
}

function FileGetEncoding(path) {
    var f = FSO.OpenTextFile(WshShell.ExpandEnvironmentStrings(path), 1, 0, 0);
    var n = FSO.GetFile(path).Size;
    n = n &lt;= 256 ? n : 256;
    var val = StringToASCIIArray(f.Read(n));
    f.Close();
    return EncodingDetect(val);
}

function EncodingDetect(str) {
    var ar, type = TypeOf(str);
    if (type == &quot;string&quot;) ar = StringToASCIIArray(str);
    if (type == &quot;bytearray&quot;) ar = BinaryToArray(str);
    if (type == &quot;array&quot;) ar = (str);
    if (!ar) return 0;
    var head = ar.slice(0, 4).map(function(x) {
        return Hex(x, 2)
    }).join(&quot;&quot;);
    if (/^EFBBBF/.test(head)) return &quot;UTF-8&quot;;
    if (/^0000FEFF/.test(head)) return &quot;UTF-32BE&quot;;
    if (/^FFFE0000/.test(head)) return &quot;UTF-32LE&quot;;
    if (/^2B2F76(38|39|2B|2F)/.test(head)) return &quot;UTF-7&quot;;
    if (/^F7644C/.test(head)) return &quot;ISO-10646-UTF-1&quot;;
    if (/^DD736673/.test(head)) return &quot;UTF-EBCDIC&quot;;
    if (/^0EFEFF/.test(head)) return &quot;SCSU&quot;;
    if (/^FBEE28/.test(head)) return &quot;BOCU-1&quot;;
    if (/^84319533/.test(head)) return &quot;GB-18030&quot;;
    if (/^FEFF0000/.test(head)) return &quot;ISO-10646-UCS-4&quot;;
    if (/^0000FFFE/.test(head)) return &quot;ISO-10646-UCS-4&quot;;
    if (/^FEFF/.test(head)) return &quot;UTF-16BE&quot;;
    if (/^FFFE/.test(head)) return &quot;UTF-16LE&quot;;
    var head2 = ar.slice(0, 60).map(function(x) {
        return Bin(x)
    }).join(&quot;&quot;);
    if (/^(0.{7}|110.{5}10.{6}|1110.{4}10.{6}10.{6}|11110.{3}10.{6}10.{6}10.{6}|111110.{2}10.{6}10.{6}10.{6}10.{6}|1111110.110.10.{6}10.{6}10.{6}10.{6}10.{6}){10,}/.test(head2)) return &quot;UTF-8 without BOM&quot;;
    return &quot;ASCII&quot;;
}

function isEmptyTextFile(path) {
    var enc = FileGetEncoding(path);
    var size = FileGetSize(path);
    if (/UTF-16/.test(enc) &amp;&amp; size == 2) return true;
    if (/ASCII/.test(enc) &amp;&amp; size == 0) return true;
    if (/UTF-32|UTF-7|UTF-EBCDIC|GB-18030|ISO-10646-UCS-4/.test(enc) &amp;&amp; size == 4) return true;
    if (/ISO-10646-UTF-1|SCSU|BOCU|UTF-8/.test(enc) &amp;&amp; size == 3) return true;
    return size == 0;
}
MsgBox(isEmptyTextFile(&quot;123.txt&quot;));
Exit();
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (JSmаn)]]></author>
			<pubDate>Tue, 08 Jul 2014 15:16:40 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=84630#p84630</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS: Проверка отсутствия в txt-файле информации]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=84628#p84628</link>
			<description><![CDATA[<p><strong>alexii</strong>, ну как с Вами не согласиться? Абсолютно верно. Я просто человеку подсказку дал, а он может подумать над подводными камнями.</p><p>Вот код, чтобы не мучать.<br /></p><div class="codebox"><pre><code>
function isEmptyTextFile(path)
{
    try {
        if (FSO.GetFile(path).Size==0) return true;
    } catch(e) {}
    return false;
}

WScript.Echo(isEmptyTextFile(&quot;123.txt&quot;).toString());
</code></pre></div><p>А так, немного усложним задачу, учитывая, что может каким-то образом попасться файл с BOM.<br /></p><div class="codebox"><pre><code>
function isEmptyTextFile(path)
{
    try {
        var FSO = new ActiveXObject(&quot;Scripting.FileSystemObject&quot;);
        if (FSO.GetFile(path).Size==0) return true;
        if (FSO.GetFile(path).Size==3) 
        {
            var f1 = FSO.OpenTextFile(path, 1, 0, 0);
            var text = f1.Read(3);
            f1.Close();
            return text==decodeURI(&quot;%D0%BF%C2%BB%D1%97&quot;);
        }
    } catch(e) {}
    return false;
}

WScript.Echo(isEmptyTextFile(&quot;123.txt&quot;).toString());
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (JSmаn)]]></author>
			<pubDate>Tue, 08 Jul 2014 14:07:44 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=84628#p84628</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS: Проверка отсутствия в txt-файле информации]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=84626#p84626</link>
			<description><![CDATA[<p><strong>JSman</strong>, а если в нём один только BOM?</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Tue, 08 Jul 2014 10:44:54 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=84626#p84626</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS: Проверка отсутствия в txt-файле информации]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=84621#p84621</link>
			<description><![CDATA[<p><a href="https://lurkmore.to/%CA%E0%EF%E8%F2%E0%ED_%CE%F7%E5%E2%E8%E4%ED%EE%F1%F2%FC">Капитан Очевидность</a> мне подсказывает, что если файл непустой, то его размер не равен нулю. Делайте выводы сами.</p>]]></description>
			<author><![CDATA[null@example.com (JSmаn)]]></author>
			<pubDate>Tue, 08 Jul 2014 08:44:06 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=84621#p84621</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS: Проверка отсутствия в txt-файле информации]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=84620#p84620</link>
			<description><![CDATA[<p><a href="http://googleitfor.me/?q=JavaScript+%D0%B4%D0%BB%D1%8F+%D1%87%D0%B0%D0%B9%D0%BD%D0%B8%D0%BA%D0%BE%D0%B2">Ссылка 1</a></p><p>И крайне рекомендую эту <a href="http://googleitfor.me/?q=%D0%9A%D0%B0%D0%BA+%D0%B8%D0%B7%D0%BB%D0%B5%D1%87%D0%B8%D1%82%D1%8C%D1%81%D1%8F+%D0%BE%D1%82+%D0%BB%D0%B5%D0%BD%D0%B8">Ссылка 2</a> и вот эту <a href="http://googleitfor.me/?q=%D0%BA%D0%B0%D0%BA+%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D1%8C%D1%81%D1%8F+%D0%BF%D0%BE%D0%B8%D1%81%D0%BA%D0%BE%D0%BC+%D0%BF%D0%BE+%D1%84%D0%BE%D1%80%D1%83%D0%BC%D1%83">Ссылка 3</a></p>]]></description>
			<author><![CDATA[null@example.com (Xameleon)]]></author>
			<pubDate>Tue, 08 Jul 2014 07:47:18 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=84620#p84620</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS: Проверка отсутствия в txt-файле информации]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=84619#p84619</link>
			<description><![CDATA[<p>дайте ссылку где пример можно глянуть</p>]]></description>
			<author><![CDATA[null@example.com (im2002)]]></author>
			<pubDate>Tue, 08 Jul 2014 07:40:58 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=84619#p84619</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS: Проверка отсутствия в txt-файле информации]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=84618#p84618</link>
			<description><![CDATA[<p>Да, есть.</p>]]></description>
			<author><![CDATA[null@example.com (Xameleon)]]></author>
			<pubDate>Tue, 08 Jul 2014 07:38:12 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=84618#p84618</guid>
		</item>
		<item>
			<title><![CDATA[JS: Проверка отсутствия в txt-файле информации]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=84617#p84617</link>
			<description><![CDATA[<p>Есть ли возможность на JS как-то проверить содержит ли текстовый файл какую-либо информацию, либо он пустой?</p>]]></description>
			<author><![CDATA[null@example.com (im2002)]]></author>
			<pubDate>Tue, 08 Jul 2014 07:18:47 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=84617#p84617</guid>
		</item>
	</channel>
</rss>
