如果你复制java源文件,你需要
- 打开源文件。
- 打开目标文件。
- 将所有内容从源复制到目标,直到看到
package
关键字。
- 将 package 关键字复制到目标文件中。
- 将“正确”的包位置写入目标文件
- 跳过源文件中“不正确”的包位置
- 将源文件的其余内容写入目标文件。
请注意,这将正确地“变基”文件的包;但它不会对可能希望在“旧”包中找到该文件的其他文件“重新定位”。要修复这些其他文件(如果它们存在,也许您的项目被设计为没有太多引用,或者您打算复制所有文件),您需要打开项目中的每个文件,在一份import
声明。如果找到它,则无需复制导入,而是复制正确的替换。
当处理一个不会真正“移动”但需要更改的文件时,最好的策略是编写一个临时文件,然后在临时文件完全写入后用临时文件替换原始文件。像这样:
(reading) MyClass.java
(writing) .tempMyClass.java
(done writing)
(moving) .tempMyClass.java to MyClass.java
这使您可以不受许多令人讨厌的项目的限制,例如将文件写入需要读取的位置(这将在您读取之前破坏您需要的信息)。
包java.io
和类java.lang.String
具有允许您编写这些工具的所有实用程序,但要详细介绍将是一篇太长的文章。尝试写一点,在网上搜索(如何使用 java 从文件中读取行,如何使用 java 将行写入文件),当你卡住时,发布你已经走了多远和你的具体代码错误或误解,很多人会很乐意提供帮助。
如果您想对已经编译的文件执行此操作,您需要阅读一些 java 类文件格式,找到类名常量字符串,并通过上面类似的过程更改它(除了您将编写二进制字节),或者您可以使用 ASM 之类的库来执行与上述相同的过程(但也许可以避免您在手动操作时可能犯的错误)。