2015-03-03 3 views
1

Я хотел бы прочитать значения в эти папки:считывать значения из файлов в разных папках

/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); 
          }        
        } 
       } 
      } 
     } 
    } 

Но я получаю нулевой результат, когда я проверить код ,

Можете ли вы помочь мне исправить код?

Также вы можете помочь мне оптимизировать код для работы?

+1

Что вы имеете в виду "я получаю пустой? Где? Файлы не найдены или пустые? – Albert

+0

Я просто получаю пустой результат. –

+0

Попробуйте запустить код в отладчике, это даст вам больше информации о том, где вы ошибетесь, то есть если каталог имеет файлы, если файл найден и т. Д. – drgPP

ответ

2

Вместо

if (file1.isFile() && file.getName().startsWith("temp")) 

это исправить, чтобы

if (file1.isFile() && file1.getName().startsWith("temp")) 

Теперь вы увидите байт отпечатанные.

+0

Sharp eye прямо здесь – drgPP

2

В этом заявлении

if (file1.isFile() && file.getName().startsWith("temp"))

после & & использование file1.getName()

Должно работать !!!

Кроме того, он будет печатать байтовый код байтового объекта, а не байты, для этого вам необходимо выполнить итерацию по массиву и распечатать. Look here for refernce

Например: System.out.println(Arrays.toString(fileBytes))

+0

Спасибо, еще один вопрос. Как я могу оптимизировать код для производительности? –