Javascript 可以像读取txt文件一样读取cpp文件吗? 我在做一个基于Web的C++ IDE类项目。我想添加一个打开按钮,用户不仅可以打开一个文本文件(使用该按钮),还可以打开一个.cpp文件。有可能吗

Javascript 可以像读取txt文件一样读取cpp文件吗? 我在做一个基于Web的C++ IDE类项目。我想添加一个打开按钮,用户不仅可以打开一个文本文件(使用该按钮),还可以打开一个.cpp文件。有可能吗,javascript,c++,Javascript,C++,下面是打开.txt文件并附加到我的contenteditable div的代码 function readSingleFile(evt) { var f = evt.target.files[0]; //console.log(f); if (!f) { alert("Failed to load file"); return; } if (f.name.indexOf('.txt') == -

下面是打开.txt文件并附加到我的contenteditable div的代码

function readSingleFile(evt) {

      var f = evt.target.files[0];
      //console.log(f);
      if (!f) {
          alert("Failed to load file");
          return;
      }
      if (f.name.indexOf('.txt') == -1) {
          alert(f.name + " is not a valid text file.");
          return;
      }

      var r = new FileReader();
      r.onload = function (e) {
          var contents = e.target.result; //.replace("\r\n","<br/>");
          contents = contents.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;');
          alert("Got the file.n" + "name: " + f.name + "n" + "type: " + f.type + "n" + "size: " + f.size + " bytesn" + "contents: " + contents);


          var tmpSent = "";
          var newContents = "";
          for (var i = 0; i < contents.length; i++) {
              if(contents.charAt(i) == '\n') {
                  newContents += "<div>"+tmpSent+"</div>";
                  tmpSent = "";
              }
              else
                  tmpSent += contents.charAt(i);
          };
          if(tmpSent.length>0)
                  newContents += "<div>"+tmpSent+"</div>";

          console.log(newContents);
          document.getElementById('board').innerHTML = newContents;
      }
      r.readAsText(f);

  }

  document.getElementById('fileinput').addEventListener('change', readSingleFile, false);
函数readSingleFile(evt){ var f=evt.target.files[0]; //控制台日志(f); 如果(!f){ 警报(“加载文件失败”); 返回; } if(f.name.indexOf('.txt')=-1){ 警报(f.name+“不是有效的文本文件。”); 返回; } var r=新文件读取器(); r、 onload=函数(e){ var contents=e.target.result;//.replace(“\r\n”和“
”); contents=contents.replace(//&/g',&;')。replace(//g',)。replace(//“/g',”); 警报(“获取文件.n”+”名称:“+f.name+”n“+”类型:“+f.type+”n“+”大小:“+f.size+”bytesn“+”内容:“+contents”); var tmpSent=“”; var newContents=“”; 对于(变量i=0;i0) 新内容+=“”+tmpSent+“”; console.log(newContents); document.getElementById('board')。innerHTML=newContents; } r、 readAsText(f); } document.getElementById('fileinput')。addEventListener('change',readSingleFile,false);

查看呈现的代码,我发现它只强制打开.txt文件

  if (f.name.indexOf('.txt') == -1) {
      alert(f.name + " is not a valid text file.");
      return;
  }
如果您想保持相同的方法,我会在其中添加一个.cpp的检查


不确定涉及的其他代码,但我会使用一个打开的文件对话框,该对话框只允许您需要的文件扩展名,这将使所提到的检查变得多余。

a
.cpp
文件通常是一个文本文件。为什么会有什么不同?cpp是一个包含多个文本的文本文件,是吗?在windows上,文件扩展名仅用于将特定文件与可处理该文件的程序关联。因此,正如其他人所建议的那样——常规文本文件与c/c++源文件(从您的角度来看)没有什么不同。格式化c/c++文件是另一回事。我认为没有必要进行扩展名检查。如果他们想要编辑ini文件或生成文件,该怎么办?为什么只为一种文件创建一个编辑器,除非它解析该格式?