如何使用VS写一个Java的文本“编译器 ”?

所需程序:

1、Visual Studio

2、JDK

你是否因为习惯于使用VS编译C/C++程序,在学java的时候改用新编译器而感到极度不适,是的,我也是...,VS界面又好看,操作又简单,难道就不能用VS编译Java吗?额...目前来说我不知道。为了表示不满,嗯,我用VS写了一个Java的“编译器”。

不知道你们的Java老师有没有讲过用文本来写java程序,如果不知道,下面我说一下:

一、使用文本写java程序:为什么要说这个呢?因为这就是我们这个“编译器”的原理。

1、在文本中(假设文件名:Test)写好java代码后,另存为(.java)格式

2、打开cmd窗口 ,cd(转移工作路径,不知道自行百度)到Test文件目录下

3、输入: javac Test.java 回车       //此刻生成.class文件

4、输入: java Test                         //这个时候进行编译,就能运行java程序了

二、如果你将一个文件拖到命令框中,会输入什么?你可以试一下,输入的是该文件的路径

三、C++文件流:用代码修改文件的内容。

上面的是我们制作这个小程序需要具备的知识,下面我讲一下流程:

使用cmd编译,我们需要准备什么呢?

(1).java格式文件;

(2)文件路径(用于cd);

(3)文件名(用于编译);

1、首先将txt文件拖到命令框中,得到的是.txt的路径;

2、根据这个文件路径,使用ifstream 打开txt文件;

3、逐行读取,同时用ofstream将读取到的信息存为同目录的.java格式文件;(这样我们就得到.java的代码文件了)

4、下面使用cmd编译,在C++中使用system()函数调用cmd,可能原来有小伙伴已经用过这个函数了(system("pause") :暂停 system("cls"):清屏 system(start 路径):打开文件)

5、将之前得到的路径分隔,得到路径和文件名(不含后缀);

6、先cd 路径,然后javac 文件名.java 最后java 文件名(注意要在同一个system中使用,用“&”连接,否则cd失效)

PS:

就这样,我们制作好了一个简易的java编译器,当然,只能编译,除了能给出报错信息,没有其他特别智能的功能,其实用文本写未尝不是一件坏事,没有了自动填充,监视窗口,难度会增加,但却也让自己记得更深,反应更快,如图:

#include<iostream>
#include<fstream>
#include<string>
using namespace std;
int main() {
string str, temp, name, Path;
cout << "将文件(.txt)拖入框中:" << endl;
cin >> str; //将文件拖入,会输入文件路径
ifstream In(str, ios::_Nocreate); //打开.txt,并且如果不存在,则不创建
if (!In) {
cout << "文件不存在!" << endl;
system("pause");
return 0;
}
cout << endl << " !!!编译成功!!!" << endl;
cout << "------------------------------------------------------------" << endl;
name = str.substr(str.rfind('\\') + 1, str.rfind('.') - str.rfind('\\') - 1); //分隔,只获取文本名
Path = str.substr(0, str.rfind('\\')); //分隔,获取路径
ofstream Out(Path + '\\' + name + ".java"); //生成.java
while (!In.eof()) {
getline(In, temp);
Out << temp << endl;
}
In.close();
Out.close();
system(("cd " + Path + "&javac " + name + ".java" + "&java " + name).c_str()); //使用cmd进行编译
system("pause");
return 0;
}

简易Java文本编译器(C++)的更多相关文章

  1. Java实现简易的文本编辑器

    需求分析: 获得文本名称 实现尾部追加功能 实现覆盖式添加数据 删除数据 获取光标位置 在特定光标位置处添加数据 查找特定字符串在主串中第一次出现的位置 统计文本文件内出现的数字,汉字,英文字母,特殊 ...

  2. java编写编译器和解释器

     on 2012-07-14 21:24 Bang 阅读(102) 评论(0) 编辑 收藏  续 第二部分 初始后端实现 框架后端支持编译器和解释器.现在框架抽象类Backend有两个极简版实现,一个 ...

  3. 一:HTML文本编译器 kindeditor-4.1.10 的使用 SpringMVC+jsp的实现

    一:我用的kindeditor版本是4.1.10 下载完成打开目录结构如下: 二:下面是工程目录也很重要,          三: 好了,准备工作已经做好了,现在就直接上代码了. 首先是页面JSP代码 ...

  4. MarkDown(文本编译器)

    MarkDown(一种高效的文本编译器) 推荐使用Typora 点击此处下载 使用方法 1. 首先创建一个文本文件xxx.txt. 2. 然后修改文件后缀为xxx.md.(可以记做玛德...) 3. ...

  5. Linux下vim(文本编译器)的使用

    vim (文本编译器): Vim是从 vi 发展出来的一个文本编辑器. vim的一些命令操作: 插入命令: a 在光标所在字符后插入 A 在光标所在行尾插入 i 在光标所在字符前插入 I 在光标所在行 ...

  6. java文本输入输出小结

    Java 文本输入主要包含两种方法:FileRead -- 按字符读入,InputSreamReader -- 按行输入. java 文本输出也包含两种方法:FileWriter 和 OuputStr ...

  7. [转帖]java的编译器,解释器和即时编译器概念

    java的编译器,解释器和即时编译器概念 置顶 2019-04-20 13:18:55 菠萝科技 阅读数 268更多 分类专栏: java jvm虚拟机 操作系统/linux   版权声明:本文为博主 ...

  8. 用java实现编译器-算术表达式及其语法解析器的实现

    大家在参考本节时,请先阅读以下博文,进行预热: http://blog.csdn.net/tyler_download/article/details/50708807 本节代码下载地址: http: ...

  9. java文本编辑器5

    package peng_jun; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.* ...

随机推荐

  1. servlet 验证码生成

    servlet package com.htpo.net; import java.awt.Color;import java.awt.Font;import java.awt.Graphics2D; ...

  2. 学Android开发的人可以去的几个网站

    学Android开发的人可以去的几个网站 1.<IT蓝豹>Android开源项目分享平台国内非常好的一个Android开发者分享站,分享android所有特效,每天都有最新的Android ...

  3. python基础学习Day8 文件的基本操作

    1.文件的基本操作初识 f = open('a.text', 'r', encoding='utf-8')data = f.read()print(data)f.close() 2.读  r  r+b ...

  4. 辅助测试工具xip.io

    http://xip.io/ https://github.com/basecamp/xip-pdns

  5. php挖掘数据编码问题

    if(json_encode($jkkey) == 'null'){//判断不是utf8会返回空 $jkkey=mb_convert_encoding($jkkey,'utf-8','gbk'); } ...

  6. js 统计数组中元素的个数

    var all = "02 06 11 12 19 29 09 10 12 19 22 29 08 11 13 19 28 31 07 08 09 15 22 27 10 18 19 29 ...

  7. Spring-data-redis redis

    什么是spring-data-redis spring-data-redis是spring-data模块的一部分,专门用来支持在spring管理项目对redis的操作,使用java操作redis最常用 ...

  8. Mysql 5.7 忘记root密码或重置密码的详细方法

    在Centos中安装完MySQL数据库以后,不知道密码,这可怎么办,下面给大家说一下怎么重置密码 在Centos中安装完MySQL数据库以后,不知道密码,这可怎么办,下面给大家说一下怎么重置密码 1. ...

  9. oracle_效率优化

    1.并行和强制走索引的用法 SELECT/*+parallel(T 16) parallel(B 16) parallel(D 16)*/ T.POLICY_NO, T.DEPARTMENT_CODE ...

  10. JMeter学习(十四)JMeter函数学习(转载)

    转载自 http://www.cnblogs.com/yangxia-test JMeter函数是一些能够转化在测试树中取样器或者其他配置元件的域的特殊值.一个函数的调用就像这样:${_functio ...