ターミナルでファイルをロードして実行するプロセスを使用してシェルスクリプトを実行するコードを少し書いています。私がいる問題は、たとえば、原因のスペースに、端末によって認識されるファイル名を取得している:虚偽のエスケープ文字の後ろにスペースが付きます
"$ ./run_file.sh foo bar.ss"
は
"$ ./run_file.sh foo\ bar.ss"
置き換え、それを変更するには、相続人はコードとしての端末で実行する必要がありますそれは:
JPanel panel1 = new JPanel();
JButton button = new JButton("Run");
button.setAlignmentX(Component.CENTER_ALIGNMENT);
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event){
run();
}
});
//button.setAlignmentX(0.5);
panel1.add(button);
panel1.add(Box.createVerticalGlue());
panel1.add(button);
menuB = new JMenuBar();
JMenu dropD = new JMenu("File");
menuB.add(dropD);
JMenuItem loadR = new JMenuItem("Load file");
JMenuItem quit = new JMenuItem("Quit");
dropD.add(loadR);
dropD.add(quit);
loadR.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event) {
JFileChooser fileopen = new JFileChooser();
int r= fileopen.showDialog(panel, "Load file");
if (r == JFileChooser.APPROVE_OPTION) {
File file = fileopen.getSelectedFile();
String string = file.toString();
string = string.replaceAll(" ", "\ ");
//String output = aa.replaceAll("/",Character.toString(File.separatorChar));
System.out.println(string);
loadFile = file;
}
}
});
私はString.replaceAllを使用してみましたが、
java:66: illegal escape character
0取得されています
私はFile.separatorCharを使用できることを実現:
string = string.replaceAll(" ", Character.toString(File.separatorChar)+" ");
が、これは何を交換していないようです... 任意の助けもいただければ幸いです。
おかげ