Api 编辑包装在jar文件中的任何文件
我想用eclipse中的java代码实现以下内容 我需要编辑jar文件目录中的.dict文件 我的目录结构如下Api 编辑包装在jar文件中的任何文件,api,jar,java,Api,Jar,Java,我想用eclipse中的java代码实现以下内容 我需要编辑jar文件目录中的.dict文件 我的目录结构如下 C:\Users\bhavik.kama\Desktop\Sphinx\sphinx4-1.0beta6-bin\sphinx4-1.0beta6\modified_jar_dict\*WSJ_8; u gau_13dCep_16k_40mel_130Hz_6800Hz.jar*\dict\**cmudit04.dict** 带粗体字符的文本是我要编辑的文本文件名 带斜体foramt的
C:\Users\bhavik.kama\Desktop\Sphinx\sphinx4-1.0beta6-bin\sphinx4-1.0beta6\modified_jar_dict\*WSJ_8; u gau_13dCep_16k_40mel_130Hz_6800Hz.jar*\dict\**cmudit04.dict**
带粗体字符的文本是我要编辑的文本文件名
带斜体foramt的文本是我的.jar文件
现在,我如何在java应用程序运行时编辑驻留在WSJ_8gau_13dCep_16k_40mel_130Hz_6800Hz.jar\dict\目录中的这个cmudict04.dict文件
我想要jar文件和我编辑过的更新文件
你能帮我什么忙吗
提前通知您。我建议您使用。使用这些类,您可以读取和写入存档中的文件。但由于内容可能会被缓存,因此不能保证修改内容
示例教程
您不能编辑Jar文件中包含的文件并将其保存在Jar文件中。。。如果没有,首先提取文件,更新它并创建一个新的Jar,方法是将旧Jar的内容复制到新Jar,删除旧Jar并在其位置重命名新Jar
我的建议是找到一个更好的解决方案我已经成功地编辑了jar文件,并将其原封不动地包装起来……使用以下代码
public void run() throws IOException
{
Manifest manifest = new Manifest();
manifest.getMainAttributes().put(Attributes.Name.MANIFEST_VERSION, "1.0");
// JarOutputStream target = new JarOutputStream(new FileOutputStream("E:\\hiren1\\WSJ_8gau_13dCep_16k_40mel_130Hz_6800Hz.jar"), manifest);
// add(new File("E:\\hiren1\\WSJ_8gau_13dCep_16k_40mel_130Hz_6800Hz/"), target);
JarOutputStream target = new JarOutputStream(new FileOutputStream("C:\\Users\\bhavik.kama\\Desktop\\Sphinx\\sphinx4-1.0beta6-bin\\sphinx4-1.0beta6\\modified_jar_dict\\WSJ_8gau_13dCep_16k_40mel_130Hz_6800Hz.jar"), manifest);
add(new File("C:\\Users\\bhavik.kama\\Desktop\\Sphinx\\sphinx4-1.0beta6-bin\\sphinx4-1.0beta6\\modified_jar_dict\\WSJ_8gau_13dCep_16k_40mel_130Hz_6800Hz/"), target);
target.close();
}
private void add(File source, JarOutputStream target) throws IOException
{
BufferedInputStream in = null;
try
{
if (source.isDirectory())
{
//String name = source.getPath().replace("\\", "/");
if(isFirst)
{
firstDir = source.getParent() + "\\";
isFirst = false;
}
String name = source.getPath();
name = name.replace(firstDir,"");
if (!name.isEmpty())
{
if (!name.endsWith("/"))
name += "/";
JarEntry entry = new JarEntry(name);
entry.setTime(source.lastModified());
target.putNextEntry(entry);
target.closeEntry();
}
for (File nestedFile: source.listFiles())
add(nestedFile, target);
return;
}
String name = source.getPath();
name = name.replace(firstDir,"").replace("\\", "/");
//JarEntry entry = new JarEntry(source.getPath().replace("\\", "/"));
JarEntry entry = new JarEntry(name);
//JarEntry entry = new JarEntry(source.getName());
entry.setTime(source.lastModified());
target.putNextEntry(entry);
in = new BufferedInputStream(new FileInputStream(source));
byte[] buffer = new byte[1024];
while (true)
{
int count = in.read(buffer);
if (count == -1)
break;
target.write(buffer, 0, count);
}
target.closeEntry();
}
finally
{
if (in != null)
in.close();
}
}
对不起,上面的目录路径中有拼写错误。让我清楚地告诉你…C:\Users\bhavik.kama\Desktop\Sphinx\sphinx4-1.0beta6-bin\sphinx4-1.0beta6\modified\u jar\u dict\WSJ\u 8gau 13dCep\u 16k\u 40mel\u 130Hz\u 6800Hz.jar\dict\cmudict04.dict你可以通过编辑将你的说明放在邮件中。那么我该怎么做呢..有人能为我写一些示例代码吗这是?@BhavikKama搜索将文件添加到zip文件,这是一个相当常见的问题;)@BhavikKama这只是几个我发现我想要的是我有一个文件夹,我想用.jar文件转换整个文件夹,就像我们在dos中编写的命令一样,比如jar-cf new.jar Folder_name。。