我有一个看起来像的java方法,
private void exportGpio(){
String fullPath = path + "/export"; // /sys/class/gpio/export
FileWriter writer = null;
try {
writer = new FileWriter(fullPath);
writer.write("" + number);
} catch (IOException e) {
Log.e(TAG + number, "Could not export", e);
}
finally {
if(writer != null){
try {
writer.flush(); <- FAILING HERE
writer.close();
} catch (IOException e) {
Log.e(TAG + number, "Could not close writer", e);
}
}
}
}
一旦进入刷新,它将引发异常
java.io.IOException:设备或资源繁忙java.io.IOException:设备或资源在sun.nio处java.io.FileOutputStream.writeBytes(本机方法)处繁忙,在java.io.FileOutputStream.write(FileOutputStream.java:345)处Sun的.cs.StreamEncoder.writeBytes(StreamEncoder.java:221)在sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:291)在sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:295)在sun。 nis.cs.StreamEncoder.flush(StreamEncoder.java:141)at光源.java.io.OutputStreamWriter.flush(OutputStreamWriter.java:229).lights.GPIO.exportGpio(GPIO.java:106).GPIO。(GPIO。 java:34)在light.LightManager。(LightManager.java:34)在main.Main.createSubsystems(Main.java:17)在main.Main.main(Main.java:34)
到底是怎么回事?Java不能与树莓派上的syses交互吗?
我最终弄清楚了这一点。我看着STaefi的答案,我认为你错了。os驱动器应处理电压。我发现的是Java中的FileWritter类不适用于这些类型的虚拟文件。我最终尝试了java print writer类,并且一切正常。
PrintWriter writer = null;
try {
writer = new PrintWriter(fullPath, "UTF-8");
writer.write("1");
} catch (IOException e) {
Log.e(TAG + number, "Could not turn on", e);
}
finally {
if(writer != null){
try {
writer.close();
} catch (Exception e) {
Log.e(TAG + number, "Could not close writer", e);
}
}
}
我仍然不确定为什么文件编写器无法正常工作,但是这种解决方案至少可以帮助其他任何陷入困境的人。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句