程序替换不工作在Windows上
问题描述:
我想找到解决方案,为什么我的程序不能在Windows上工作。程序替换不工作在Windows上
我在Ubuntu 16.04
上测试过,一切正常。我的朋友在Mac
上进行了测试,结果也一样 - 工作。
我的第一个想法是 - 错误的路径。但是我们测试它的路径是可以的。问题可能是Windows不会创建文件。我评论过其他代码,并且txt甚至没有创建。
我会很高兴为每个答案。对不起,我的英语和我的代码:)
替换类:
package model;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
/**
*
* @author pepek
*/
public class Replace {
public static void replaceInFile(String fileName) throws IOException {
File file = new File(fileName);
// fileName = "/home/pepek/Desktop/Share/09a_pozice_asic_pcb.txt";
File tempFile = File.createTempFile("buffer", ".tmp");
FileWriter fw = new FileWriter(tempFile);
Reader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
while(br.ready()) {
fw.write(br.readLine().replace(".", ",") +"\n");
}
fw.close();
br.close();
fr.close();
// Finally replace the original file.
tempFile.renameTo(file);
}
}
Okno类:
package gui;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;
import model.Replace;
/**
*
* @author pepek
*/
public class Okno extends JFrame {
private JButton btnGlass;
public Okno() {
setLayout(new GridLayout(0,2));
btnGlass = new JButton("Pozice skla");
btnGlass.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
Replace.replaceInFile("D:\\merove programy\\02_pozice_skla\\02_pozice_skla_data_new.txt");
} catch (IOException ex) {
Logger.getLogger(Okno.class.getName()).log(Level.SEVERE, null, ex);
}
}
});
add(btnGlass);
JButton btnElement = new JButton("Pozice elementu");
btnElement.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
Replace.replaceInFile("D:\\merove programy\\05_pozice_elementu\\05_pozice_elementu.TXT");
} catch (IOException ex) {
Logger.getLogger(Okno.class.getName()).log(Level.SEVERE, null, ex);
}
}
});
add(btnElement);
JButton btnFireElement = new JButton("Vytvrzení elementu");
btnFireElement.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
Replace.replaceInFile("D:\\merove programy\\07_pozice_elementu_vytvrdnuti\\07_pozice_elementu_vytvrdnuti_data.TXT");
} catch (IOException ex) {
Logger.getLogger(Okno.class.getName()).log(Level.SEVERE, null, ex);
}
}
});
add(btnFireElement);
JButton btnUhelSpaceru = new JButton("Úhel spaceru");
btnUhelSpaceru.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
Replace.replaceInFile("D:\\merove programy\\08_uhel_spaceru\\08_uhel_spaceru.TXT");
} catch (IOException ex) {
Logger.getLogger(Okno.class.getName()).log(Level.SEVERE, null, ex);
}
}
});
add(btnUhelSpaceru);
JButton btnPozice = new JButton("Pozice ASIC a PCB");
btnPozice.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
Replace.replaceInFile("D:\\merove programy\\09a_pozice_asic_pcb\\09a_pozice_asic_pcb.TXT");
} catch (IOException ex) {
Logger.getLogger(Okno.class.getName()).log(Level.SEVERE, null, ex);
}
}
});
add(btnPozice);
JButton btnVyska = new JButton("Výška ASIC a PCB");
btnVyska.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
Replace.replaceInFile("D:\\merove programy\\10a_vyska_asic_pcb\\10a_vyska_asic_pcb.txt");
} catch (IOException ex) {
Logger.getLogger(Okno.class.getName()).log(Level.SEVERE, null, ex);
}
}
});
add(btnVyska);
JButton btnVyskaSpaceru = new JButton("Vytvrzení elementu");
btnVyskaSpaceru.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
Replace.replaceInFile("D:\\merove programy\\15_vyska_spaceru\\15_vyska_spaceru.txt");
} catch (IOException ex) {
Logger.getLogger(Okno.class.getName()).log(Level.SEVERE, null, ex);
}
}
});
add(btnVyskaSpaceru);
setTitle("Find&Replace App"); // "super" Frame sets its title
setSize(750, 300);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new Okno();
}
}
答
尝试改变路径使用反斜杠或双反斜线(反斜杠被认为是为特殊字符),因为windows
在其路径中使用反斜杠,linux
和unix
使用正斜杠
+0
我已经试过。 –
请在页面上发布您的代码,不要链接它。 –
补充说明@PauloSoares –