Java写入exe文件
是否可以用Java编写/创建exe文件? 我可以成功地读取它,但将完全相同的数据写入新文件似乎会带来一些麻烦,因为Windows告诉我,我的电脑不再支持它
这是我用来读取文件的代码,其中path
是用实际的path
给出的String
(它在.jar
本身中,这就是我使用ResourceAsStream()
的原因):
try {
InputStream inputStream = FileIO.class.getResourceAsStream(path);
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
ArrayList<String> _final = new ArrayList<String>();
String line;
while ((line = reader.readLine()) != null) {
_final.add(line);
}
inputStream.close();
return _final.toArray(new String[_final.size()]);
}catch(Exception e) {
return null;
}
这是我用来编写文件的代码:
public static void writeFileArray(String path, String[] data) {
String filename = path;
try{
FileWriter fileWriter = new FileWriter(filename);
BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
for(String d : data) {
bufferedWriter.write(d + "\n");
}
bufferedWriter.close();
}
catch(IOException ex){
System.out.println("FileIO failed to write file, IO exception");
}
}
所以它不会给我任何错误或其他东西,也不会给我原始文件的大小。exe和“已转移”。exe保持不变,但不再工作。我只是做错了吗?我忘了什么吗?你能用Java做到这一点吗
顺便说一句,我没有读/写文件的经验
谢谢你考虑我的要求
# 1 楼答案
当您使用Java7或更新版本时,您应该使用
这种构造确保了即使在异常情况下也能正确关闭资源,而JRE方法确保了数据的正确和高效复制
它接受其他选项,例如,如果目标文件已经存在,则指定应覆盖该文件,您可以使用
# 2 楼答案
您正在对字符串使用InputStreams,。exe文件是字节! 尝试使用ByteArrayInputStream和ByteArrayOutputStream
编辑:填写markspace的答案:
# 3 楼答案
我猜您应该使用原始输入流时使用了
Reader
。用BufferedInputStream代替BufferedReader
问题是
Reader
将二进制文件解释为本地字符集,而不是所需的数据编辑:如果你需要一个更大的提示,从这个开始。我刚刚注意到你也在使用
BufferedWriter
,那也不行