gpt4 book ai didi

java - 如何写入文件并将该文件再次读取到临时文件中

转载 作者:行者123 更新时间:2023-12-01 12:44:50 25 4
gpt4 key购买 nike

edit "second version"

我已经使用 ANTLR 构建了一个 Java swing 来获取源代码树。为了获取从 ANTLR 构建的 TreeMap 像,我使用 GRAPHVIZ,http://www.graphviz.org/ .

因此,Graphviz 将写入一个扩展名为 .dot 的文件,然后我将其加载到我的 Swing 应用程序中。我的代码是这样的

String OS = System.getProperty("os.name");
Runtime rt = Runtime.getRuntime();
BufferedWriter bw = null;
File tempDir = new File(System.getProperty("java.io.tmpdir"));

File tempInput;
try {
tempInput = File.createTempFile("output", ".dot", tempDir);
File tempOutput = File.createTempFile("tree", ".png", tempDir);

if (OS.equals("Linux")) {

try {

bw = new BufferedWriter(new FileWriter(tempInput.getAbsoluteFile()));
bw.write(st2);
bw.close();

Process pr = rt.exec("dot -Tpng /tmp/output.dot -o "
+ "/tmp/tree.png");

} catch (IOException ex) {
System.out.println("failed to write the image file");
}

} else {

try {

bw = new BufferedWriter(new FileWriter(tempInput.getAbsoluteFile()));
bw.write(st2);
bw.close();

String dotPath = "C:\\Program Files (x86)\\Graphviz2.38\\bin\\dot.exe";
String fileInputPath = tempInput.toString();
String fileOutputPath = tempOutput.toString();
String tParam = "-Tpng";
String tOParam = "-o";

String[] cmd = new String[5];
cmd[0] = dotPath;
cmd[1] = tParam;
cmd[2] = fileInputPath;
cmd[3] = tOParam;
cmd[4] = fileOutputPath;

rt.exec(cmd);

} catch (IOException ex) {
System.out.println("Failed to write to file");
} finally {

}
}
} catch (IOException ex) {
Logger.getLogger(MainAlgoritma.class.getName()).log(Level.SEVERE, null, ex);
}

你知道,windows中的输出应该命名为tree.png。但 Windows 没有给我这个名字。名称是动态更改的,例如tree2593490478729479216.png 有时像 tree9133268802668231475.png 等。

我的问题是:

  1. 如何获取名称 tree.png ?
  2. 图像读取并加载到应用程序后,如何删除处理后的图像?

    编辑

现在,如何读取该图像然后将其加载到应用程序中...?我再次创建一个类来加载图像,但你知道,我仍然很困惑。

private BufferedImage image;
String tmpfolder = System.getProperty("java.io.tmpdir");

public FileImage() {

if (OS.equals("Linux")) {
try {
image = ImageIO.read(new File(tmpfolder+"/tree.png"));
} catch (IOException ex) {
System.out.println("Image failed to load..!!! ");
}
} else {

try {
image = ImageIO.read(new File(tmpfolder+"\\tree.png"));
} catch (IOException ex) {
System.out.println("Image failed to load...!!! ");
}
}

JLabel jLabel = new JLabel(new ImageIcon(image));
jPanel3.add(jLabel);

}

最佳答案

您可以使用相对路径或使用JFileChooser,而不是硬编码绝对路径。在 Swing 中打开一个文件选择器,让用户选择一个文件用于输入和/或输出。

关于java - 如何写入文件并将该文件再次读取到临时文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24802309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com