Вам нужно выполнить chmod, и вы, вероятно, можете сделать это, выполнив системную команду, например:
На самом деле все, что вам нужно, это запустить что-то вроде этого:
Runtime.getRuntime().exec("chmod u+x "+FILENAME);
Но если вы хотите отслеживать это более явно, можете захватить stdin / stderr, тогда что-то более похожее на:
Process p = Runtime.getRuntime().exec("chmod u+x "+FILENAME);
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
BufferedReader stdError = new BufferedReader(new InputStreamReader(p.getErrorStream()));
Что я получил отсюда:
http://www.devdaily.com/java/edu/pj/pj010016/pj010016.shtml
Обновление:
Тестовая программа:
package junk;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
public class Main{
private String scriptContent = '#!/bin/bash \n echo "yeah toast!" > /tmp/toast.txt';
public void doIt(){
try{
Writer output = new BufferedWriter(new FileWriter("/tmp/toast.sh"));
output.write(scriptContent);
output.close();
Runtime.getRuntime().exec("chmod u+x /tmp/toast.sh");
}catch (IOException ex){}
}
public static void main(String[] args){
Main m = new Main();
m.doIt();
}
}
В linux, если вы откроете файловый браузер и дважды щелкните по /tmp/toast.sh и решите запустить его, он должен сгенерировать текстовый файл /tmp/toast.txt со словами «да тост». Я предполагаю, что Mac сделал бы то же самое, так как это BSD под капотом.