У меня есть рабочий код (по крайней мере, в Eclipse), в котором я работаю с некоторыми файлами: у меня есть файл .dot, который я записываю в некоторый текст, поэтому я могу прочитать его, чтобы создать график. Затем я сохраняю график в изображение .png, которое я отображаю на рамке.
Моя проблема: в исполняемом файле .jar я не могу получить доступ к этим файлам, а также - если я знаю это правильно - я даже не могу изменить время выполнения em. Поэтому я попытался работать с потоками. Я могу получить доступ к файлу .dot, например:
$InputStream fileStream = this.getClass().getResourceAsStream("/graf.dot");$
Но я понятия не имею, как я могу написать в него. Я нашел OutputStreamWriter , но он также требует пути, по которому я не могу получить доступ, как будто я получил доступ к InputStream .. Я также борюсь с чтением текста из файла и созданием файла .png ... Может пожалуйста, помогите мне? Можно ли вообще работать с этими файлами во время выполнения?
У меня была та же проблема с доступом к фоновому изображению рамки, но я нашел решение:
$URL bgPath = this.getClass().getResource("/background.jpg");
panel = new JLabel(new ImageIcon(bgPath));$
Так что я действительно надеюсь, что существует какое-то подобное решение для файлов, с которыми я работаю ..
private void createGraph() throws IOException {
/* Creating the graph into "graf.dot" file.
* The format is in DOT language.
*/
String fileName = "src/main/resources/graf.dot";
InputStream fileStream = this.getClass().getResourceAsStream("/graf.dot");
BufferedReader br = new BufferedReader(new InputStreamReader(fileStream));
/* Here I write the content into *graph_string**/
br.close();
try {
FileOutputStream outputStream = new FileOutputStream(fileName);
OutputStreamWriter writer = new OutputStreamWriter(outputStream);
//FileWriter writer = new FileWriter(fileName);
writer.write(graph_string);
writer.close();
}catch (IOException e) {
System.out.println("Error writing into file");
}finally {
drawGraph();
}
}
private void drawGraph() throws IOException {
/*
* Reading the graph from file for visualization
*/
String fileName = "src/main/resources/graf.dot";
InputStream fileStream = this.getClass().getResourceAsStream("/graf.dot");
BufferedReader br = new BufferedReader(new InputStreamReader(fileStream));
File file = new File("src/main/resources/graf.dot");
String str="";
try {
str = FileUtils.readFileToString(file, "UTF-8");
} catch (IOException e) {
System.out.println("Errorrr reading from file.");
}
MutableGraph g = Parser.read(str);
Graphviz.fromGraph(g).render(
Format.PNG).toFile(new File("src/main/resources/graph.png"));
BufferedImage background = ImageIO.read(new File("src/main/resources/graph.png"));
panel = new JLabel(new ImageIcon(background));
...
}