Alguém pode fornecer um código de exemplo para ler e gravar um arquivo usando JavaScript?
javascript
file-io
user4642212
fonte
fonte
Respostas:
Por questões de integridade, o OP não declara que ele está procurando fazer isso em um navegador (se ele estiver, como foi afirmado, geralmente não é possível)
No entanto, o javascript em si permite isso; isso pode ser feito com o javascript do lado do servidor.
Consulte esta documentação na classe Javascript FileEdit : Esse link era para os documentos da Sun que agora foram movidos pela Oracle.
Para acompanhar os horários, veja a documentação do node.js da classe FileSystem: http://nodejs.org/docs/latest/api/fs.html
Editar (2) : agora você pode ler arquivos do lado do cliente com HTML5: http://www.html5rocks.com/en/tutorials/file/dndfiles/
fonte
Não. O javascript do navegador não tem permissão para gravar na máquina cliente sem que muitas opções de segurança tenham que ser desativadas
fonte
This answer is not useful
.O futuro está aqui! As propostas estão mais próximas da conclusão, sem mais ActiveX, flash ou java. Agora podemos usar:
APIs do sistema de arquivos
Acesso nativo a arquivos de arrastar e soltar
Você pode usar o Arrastar / Soltar para colocar o arquivo no navegador ou um simples controle de upload. Depois que o usuário selecionar um arquivo, você poderá lê-lo com Javascript: http://www.html5rocks.com/en/tutorials/file/dndfiles/
fonte
aqui está a proposta do mozilla
http://www-archive.mozilla.org/js/js-file-object.html
isso é implementado com uma opção de compilação no spidermonkey e também no extendscript da adobe. Além disso (eu acho), você obtém o objeto File nas extensões do Firefox.
O rhino possui uma função readFile (bastante rudimentar) https://developer.mozilla.org/en/Rhino_Shell
para operações de arquivo mais complexas no rhino, você pode usar os métodos java.io.File.
você não receberá nada disso no navegador. Para funcionalidades semelhantes em um navegador, você pode usar as funções de banco de dados SQL do HTML5, persistência do cliente, cookies e objetos de armazenamento flash.
fonte
Essa função Javascript apresenta uma caixa de diálogo "Salvar como" completa para o usuário que executa isso no navegador. O usuário pressiona OK e o arquivo é salvo.
Editar: O código a seguir funciona apenas com o navegador IE, uma vez que o Firefox e o Chrome consideraram esse código um problema de segurança e o impediram de funcionar.
Invoque a função:
fonte
Se você estiver usando JScript (Javascript da Microsoft) para executar scripts locais usando o WSH (NÃO em um navegador!), Poderá usar
Scripting.FileSystemObject
para acessar o sistema de arquivos.Acho que você pode acessar o mesmo objeto no IE se desativar muitas configurações de segurança, mas isso seria uma idéia muito, muito ruim.
MSDN aqui
fonte
hta
aplicativo e isso resolve-loAtualmente, os arquivos podem ser gravados e lidos a partir do contexto de uma guia / janela do navegador com as APIs File , FileWriter e FileSystem , embora haja advertências quanto ao seu uso (consulte o final desta resposta).
Mas para responder sua pergunta:
Usando o BakedGoods *
Gravar arquivo:
Leia o arquivo:
Usando as APIs File, FileWriter e FileSystem brutas
Gravar arquivo:
Leia o arquivo:
Apenas o que você pediu certo? Talvez talvez não. As duas últimas APIs:
Além disso, a especificação FileSystem não define diretrizes sobre como as estruturas de diretórios devem aparecer no disco. Em navegadores baseados no Chromium, por exemplo, a sandbox possui um sistema de arquivos virtual (uma estrutura de diretórios que não existe necessariamente no disco da mesma forma que quando acessada pelo navegador), dentro do qual os diretórios e arquivos criados com o APIs são colocadas.
Portanto, embora você possa gravar arquivos em um sistema com as APIs, localizá-los sem as APIs (bem, sem a API FileSystem) pode ser um assunto não trivial.
Se você pode lidar com esses problemas / limitações, essas APIs são praticamente a única maneira nativa de fazer o que você pediu.
Se você estiver aberto a soluções não nativas, o Silverlight também permitirá a entrada / saída de arquivos em um concurso de guias / janelas por meio do IsolatedStorage . No entanto, é necessário código gerenciado para utilizar esse recurso; uma solução que exige a escrita desse código está além do escopo desta pergunta.
Obviamente, uma solução que utiliza código gerenciado complementar, deixando um com apenas Javascript para escrever, está bem dentro do escopo desta pergunta;):
* BakedGoods é uma biblioteca Javascript que estabelece uma interface uniforme que pode ser usada para realizar operações comuns de armazenamento em todos os recursos de armazenamento nativos e alguns não-nativos. É mantido por esse cara aqui:).
fonte
Para o Firefox:
Consulte https://developer.mozilla.org/en-US/docs/Code_snippets/File_I_O
Para outros, consulte o aplicativo TiddlyWiki para ver como ele funciona.
fonte
No contexto do navegador, o Javascript pode ler o arquivo especificado pelo usuário. Consulte o blog de Eric Bidelman para obter detalhes sobre a leitura de arquivos usando a API de arquivos. No entanto, não é possível que o Javascript baseado em navegador escreva o sistema de arquivos do computador local sem desativar algumas configurações de segurança, pois é considerado uma ameaça à segurança de qualquer site alterar arbitrariamente o sistema de arquivos local.
Dizendo isso, existem algumas maneiras de contornar isso, dependendo do que você está tentando fazer:
Se for o seu próprio site, você pode incorporar um Java Applet na página da web. No entanto, o visitante precisa instalar o Java na máquina local e será alertado sobre o risco à segurança. O visitante deve permitir que o applet seja carregado. Um Java Applet é como um software executável que possui acesso completo ao computador local.
O Chrome suporta um sistema de arquivos que é uma parte da área restrita do sistema de arquivos local. Veja esta página para detalhes. Isso permite que você salve temporariamente as coisas localmente. No entanto, isso não é suportado por outros navegadores.
Se você não está limitado ao navegador, o Node.js possui uma interface completa do sistema de arquivos. Veja aqui a documentação do sistema de arquivos . Observe que o Node.js pode ser executado não apenas em servidores, mas também em qualquer computador cliente, incluindo o Windows. O corredor de teste javascript Karma é baseado em Node.js. Se você gosta de programar em javascript no computador local, esta é uma opção.
fonte
Para criar arquivo, tente
Crie seu diretório na unidade C porque o Windows possui segurança contra gravação na Web, por exemplo, crie uma pasta chamada "tmp" na unidade C.
fonte
Você terá que recorrer ao Flash, Java ou Silverlight. No caso do Silverlight, você verá o armazenamento isolado . Isso fará com que você grave arquivos no seu próprio playground no disco do usuário. Porém, não permitirá que você escreva fora do seu playground.
fonte
Você não pode fazer isso de maneira cruzada no navegador. O IE possui métodos para permitir que aplicativos "confiáveis" usem objetos ActiveX para ler / gravar arquivos, mas infelizmente é isso.
Se você deseja salvar as informações do usuário, provavelmente precisará usar cookies.
fonte
Em um teste ReactJS, o seguinte código grava um arquivo com êxito:
O arquivo é gravado no diretório que contém os testes, portanto, a gravação em um arquivo JSON real '* .json' cria um loop!
fonte
Você não pode executar a E / S de arquivos no lado do cliente usando javascript, pois isso seria um risco à segurança. Você teria que fazer o download e executar um exe ou, se o arquivo estiver no seu servidor, use AJAX e uma linguagem do lado do servidor, como PHP, para fazer a E / S no lado do servidor
fonte
Usando extensões JavaScript
Usando uma página da Web e objetos do Active X
fonte
Aqui está a solução de gravação para o Chrome v52 + (o usuário ainda precisa selecionar uma corça de destino ...)
source: StreamSaver.js
Mais adequado para gravar grandes dados gerados no lado do cliente.
Caso contrário, sugiro usar o FileSaver.js para salvar Blob / Files
fonte