ユーザーがマシンIPスキーム(IP、SubnetMask、DefaultGateway)を永久に変更できる機能をアプリケーションに追加したい次のコードを使用してLinuxネットワーク構成ファイル( "/ etc/network/interfaces")で読み取り/書き込み操作を実行します。コードを使ってLinuxネットワーク構成ファイル( "/ etc/network/interfaces")を編集する
File file = new File("/etc/network/interfaces");
boolean exists = file.exists();
String line = "";
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
try
{
FileReader fr = new FileReader(file.getAbsoluteFile());
//BufferedReader br = new BufferedReader(fr);
Scanner scan = new Scanner(new FileInputStream(file));
if(exists)
{
while(scan.hasNext()) //while((line = br.readLine()) != null)
{
// Any Write operation
}
scan.close(); // br.close
}
}
bw.close();
問題while()ループのチェックがfalseを返すことが問題です。 私はBufferedReaderやScannerを使ってファイルを読むことができますが、うまくいきませんでした。次のすべてのチェックはfalseを返し続けます。
while(scan.hasNext())
while(scan.hasNextLine())
while((line = br.readLine()) != null)
ファイルは存在しますが、その内容は含まれていますが、上記のコードですべてのファイルコンテンツを読み込もうとするたびに、ファイルは空になります。
何か不足していますか?より良い選択肢はありますか?私は同じディレクトリ内の別のファイルを読み込みましたが、これはすべてのユーザーに対して読み取り/書き込み/実行の完全なアクセス許可を持っていますが、同じ結果を返します。
このファイルを開くための管理者特権がないためだと思います。たぶん良いスタートを読む:http://stackoverflow.com/questions/36828036/is-there-a-way-for-a-java-app-to-gain-root-permissions –
解決策を再考する必要があります – rkosegi
IすでにIp/Subnet(sudo ifconfig eth0 new_ip netmask new_subet)を変更して永久に行うコマンドをコードで直接実行しようとしました。しかし残念なことにDefaultGatewayではなく、(sudoルートはデフォルトのgw new_gwを追加します)。マシンが再起動すると、 'interfaces'ファイルからマシンがロードされます。 スクリプトの使用は私にとってはオプションではありません。 他の解決策がありますか?それを感謝します。ありがとう – AlphaTry