чтение котлина из файла в байтовый массив

Сначала я приведу вам пример:

public interface LoginAuth{
   public String encryptPassword(String pass);
   public void checkDBforUser();
}

Теперь предположим, что у вас есть 3 базы данных в вашем приложении. Затем каждая реализация для этой базы данных должна определять два вышеуказанных метода:

public class DBMySQL implements LoginAuth{
          // Needs to implement both methods
}
public class DBOracle implements LoginAuth{
          // Needs to implement both methods
}
public class DBAbc implements LoginAuth{
          // Needs to implement both methods
}

Но что, если encryptPassword () не зависит от базы данных, и для каждого класса одинаково? Вместо этого рассмотрим этот подход:

public abstract class LoginAuth{
   public String encryptPassword(String pass){
            // Implement the same default behavior here 
            // that is shared by all subclasses.
   }

   // Each subclass needs to provide their own implementation of this only:
   public abstract void checkDBforUser();
}

Теперь в каждом дочернем классе нам нужно реализовать только один метод - метод, который зависит от базы данных.

Я старался изо всех сил и надеюсь, что это очистит ваши сомнения.

2
задан arun siara.cc 29 March 2019 в 11:36
поделиться

1 ответ

Самый простой способ - использовать

File("aaa").readBytes()

, который будет читать весь файл в ByteArray. Но вы должны тщательно знать, что у вас достаточно оперативной памяти в куче, чтобы сделать это

ByteArray можно создать с помощью вызова ByteArray(100), где 100 - его размер

Для [ 115], вероятно, лучше использовать функцию readFully, которая считывает именно запрошенное количество байтов.

Классический подход позволяет читать файл по частям, например,

    val buff = ByteArray(1230)
    File("aaa").inputStream().buffered().use { input ->
      while(true) {
        val sz = input.read(buff)
        if (sz <= 0) break

        ///at that point we have a sz bytes in the buff to process
        consumeArray(buff, 0, sz)
      }
    }
0
ответ дан Eugene Petrenko 29 March 2019 в 11:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: