書き実行形式にまとめたものです。shファイルのJava用OSX
-
21-08-2019 - |
質問
なんて書きます。shファイルと実行がどのようになっていました書面での:
Writer output = null;
try {
output = new BufferedWriter(new FileWriter(file2));
output.write(shellScriptContent);
output.close();
} catch (IOException ex) {
Logger.getLogger(PunchGUI.class.getName()).log(Level.SEVERE, null, ex);
}
その書き込みのファイルは、イブレア城、イブレア大な実行形式にまとめたものです。があるので、変更の実行状況を書くのですか?
編集:層の明確化を行うことによって実行しますデフォルト、例えばダブルクリックし、生成されたファイル、自動的に実行できます。
解決
ですかchmodで、できるのではないでしょうかしかし、それは間違っていexec'ingシステムコマンドのような:
って思いま必要なのは火災offのようなこと:
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の下にフードです。
他のヒント
話ができ File.setExecutable()
設定オーナーの実行可能なビットのファイルを、十分な機会です。やき chmod
自分でシステム呼び出しと Process
.
悲しいかな、フルパワードプロファイルの改ざん、アクセス権がないままでJava7.では、IO特定につなげていくかを学びます こちらの.
Java7話ができ Files.setPosixFilePermissions
.以下に例を示します。
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.PosixFilePermission;
import java.util.Set;
class FilePermissionExample {
public static void main(String[] args) throws IOException {
final Path filepath = Paths.get("path", "to", "file.txt");
final Set<PosixFilePermission> permissions = Files.getPosixFilePermissions(filepath);
permissions.add(PosixFilePermission.OWNER_EXECUTE);
Files.setPosixFilePermissions(filepath, permissions);
}
}
Mac OS Xでは、chmodの+ X以外にも、あなたは、ダブルクリックで、それを起動したい場合は、あなたのシェルスクリプトに.command
拡張子を与える必要があります。