【发布时间】:2017-06-02 16:38:10
【问题描述】:
我想在 App 中添加一个功能,用户可以永久更改机器 IP 方案(IP、SubnetMask、DefaultGateway),所以我想对 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)
虽然文件确实存在,但它包含它的内容但是每次我尝试使用上面的代码读取它时,所有文件内容都会被删除并且文件变空。
我错过了什么吗?有没有更好的选择?我还尝试读取同一目录中的另一个文件,该文件对所有用户具有读/写/执行的完全权限,但结果仍然相同
【问题讨论】:
-
我认为这是因为您没有正确的管理员权限来打开此文件。也许是一个好的开始阅读:stackoverflow.com/questions/36828036/…
-
你应该重新考虑你的解决方案
-
我已经尝试过直接通过代码运行命令来更改 Ip/Subnet (sudo ifconfig eth0 new_ip netmask new_subet),这可以解决问题并永久执行。但不幸的是,DefaultGateway 不是(sudo route add default gw new_gw)。当机器重新启动时,它会从“接口”文件中加载它。使用脚本不是我的选择。那么您认为我应该采取的任何其他解决方案吗?感谢。谢谢
标签: java linux file networking