Como ler um arquivo de texto local?

Eu estou tentando escrever um leitor de arquivo de texto simples, criando uma function que leva no caminho do arquivo e converte cada linha de texto em uma matriz de caracteres, mas não está funcionando.

function readTextFile() { var rawFile = new XMLHttpRequest(); rawFile.open("GET", "testing.txt", true); rawFile.onreadystatechange = function() { if (rawFile.readyState === 4) { var allText = rawFile.responseText; document.getElementById("textSection").innerHTML = allText; } } rawFile.send(); } 

o que há de errado aqui?

Isso ainda não parece funcionar depois de alterar o código um pouco de uma revisão anterior e agora está me dando uma exceção XMLHttpRequest 101.

Eu testei isso no Firefox e funciona, mas no Google Chrome ele simplesmente não funciona e continua me dando uma Exceção 101. Como faço para que isso funcione não apenas no Firefox, mas também em outros navegadores (especialmente o Chrome )?

Você precisa verificar o status 0 (como ao carregar arquivos localmente com XMLHttpRequest , você não obtém um status retornado porque não é de um Webserver da Webserver )

 function readTextFile(file) { var rawFile = new XMLHttpRequest(); rawFile.open("GET", file, false); rawFile.onreadystatechange = function () { if(rawFile.readyState === 4) { if(rawFile.status === 200 || rawFile.status == 0) { var allText = rawFile.responseText; alert(allText); } } } rawFile.send(null); } 

E especifique file:// no seu nome de arquivo:

 readTextFile("file:///C:/your/path/to/file.txt"); 

Visite Javascripture ! E vá para a seção readAsText e tente o exemplo. Você será capaz de saber como funciona a function readAsText do FileReader .

       
...

Após a introdução do fetch api em javascript, a leitura do conteúdo do arquivo não poderia ser mais simples.

lendo um arquivo de texto

 fetch('file.txt') .then(response => response.text()) .then(text => console.log(text)) // outputs the content of the text file 

lendo um arquivo json

 fetch('file.json') .then(response => response.json()) .then(jsonResponse => console.log(jsonResponse)) // outputs a javascript object from the parsed json 

Atualização 30/07/2018 (disclaimer):

Essa técnica funciona bem no Firefox , mas parece que a implementação de fetch Chrome não suporta file:/// esquema file:/// URL na data de gravação desta atualização (testada no Chrome 68).

 var input = document.getElementById("myFile"); var output = document.getElementById("output"); input.addEventListener("change", function () { if (this.files && this.files[0]) { var myFile = this.files[0]; var reader = new FileReader(); reader.addEventListener('load', function (e) { output.textContent = e.target.result; }); reader.readAsBinaryString(myFile); } }); 
  

Tente criar duas funções:

 function getData(){ //this will read file and send information to other function var xmlhttp; if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); } else { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange = function () { if (xmlhttp.readyState == 4) { var lines = xmlhttp.responseText; //*here we get all lines from text file* intoArray(lines); *//here we call function with parameter "lines*" } } xmlhttp.open("GET", "motsim1.txt", true); xmlhttp.send(); } function intoArray (lines) { // splitting all text data into array "\n" is splitting data from each new line //and saving each new line as each element* var lineArr = lines.split('\n'); //just to check if it works output lineArr[index] as below document.write(lineArr[2]); document.write(lineArr[3]); } 

outro exemplo – meu leitor com a class FileReader

          
Source file

Jon Perryman,

Sim js pode ler arquivos locais (veja FileReader ()) mas não automaticamente: o usuário tem que passar o arquivo ou uma lista de arquivos para o script com um html .

Então, com js, é possível processar (ver exemplo) o arquivo ou a lista de arquivos, algumas de suas propriedades e o conteúdo do arquivo ou arquivos.

O que o js não pode fazer por razões de segurança é acessar automaticamente (sem a input do usuário) para o sistema de arquivos do seu computador.

Para permitir que o js acesse o fs local automaticamente é necessário criar não um arquivo html com js dentro dele, mas um documento hta.

Um arquivo hta pode conter js ou vbs dentro dele.

Mas o executável hta funcionará apenas em sistemas Windows.

Este é o comportamento padrão do navegador.

Também o google chrome trabalhou no fs api, mais informações aqui: http://www.html5rocks.com/en/tutorials/file/filesystem/

Provavelmente você já tente, digite “false” como segue:

  rawFile.open("GET", file, false); 

Isso pode ajudar

  var xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP"); xmlhttp.onreadystatechange = function () { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { alert(xmlhttp.responseText); } } xmlhttp.open("GET", "sample.txt", true); xmlhttp.send(); 
         
Select All