我想将值读入这些文件夹:
/sys/devices/virtual/thermal/thermal_zone0/temp:68000
/sys/devices/virtual/thermal/thermal_zone3/temp:50000
/sys/devices/virtual/thermal/thermal_zone5/temp:24900
/sys/devices/virtual/thermal/thermal_zone7/temp:62000
/sys/devices/virtual/thermal/thermal_zone8/temp:65000
/sys/devices/virtual/thermal/thermal_zone9/temp:78000
我测试了这段代码:
public void listFolders() throws IOException
{
File directory = new File("/sys/devices/virtual/thermal");
File[] fList = directory.listFiles();
for (File file : fList)
{
if (file.isDirectory() && file.getName().startsWith("thermal_zone"))
{
File[] listFiles = file.listFiles();
for (File file1 : listFiles)
{
byte[] fileBytes = null;
if (file1.exists())
{
try
{
fileBytes = Files.readAllBytes(file1.toPath());
}
catch (AccessDeniedException e)
{
}
if (fileBytes.length > 0)
{
System.out.println(">>>>> " + fileBytes);
}
}
}
}
}
}
但是当我测试代码时,我得到null结果。
你能帮我解决一下代码吗?
您也可以帮我优化代码以提高性能吗?
答案 0 :(得分:2)
而不是
if (file1.isFile() && file.getName().startsWith("temp"))
纠正
if (file1.isFile() && file1.getName().startsWith("temp"))
现在您将看到打印的字节。
答案 1 :(得分:2)
在本声明中,
if (file1.isFile() && file.getName().startsWith("temp"))
&&使用file1.getName()
应该工作!!!
此外,它将打印字节对象的哈希码,而不是字节,因为您需要迭代数组和打印。 Look here for refernce
例如:System.out.println(Arrays.toString(fileBytes))