Копия файла Android - PullRequest
       28

Копия файла Android

2 голосов
/ 06 января 2011

Я считаю, что чтение одной строки за раз из текстового файла на SD-карте происходит довольно медленно. Я полагаю, что это может быть быстрее, если файл находится во внутренней памяти, поэтому я хочу скопировать файлы с SD-карты во внутреннюю память.

Примеры копирования файлов, которые я могу найти в Интернете, включают копирование одного байта за раз из InputStream в OutputStream или из FileReader в FileWriter. Это действительно самый быстрый и самый эффективный метод?

Ответы [ 2 ]

7 голосов
/ 06 января 2011

Если вы извлекаете файл для использования в вашем приложении, то я предлагаю вам прочитать данные, а затем вставить данные в памяти, которые вы собрали, в какое-то устройство чтения (возможно, BufferedReader), чтобы затем вы могли прочитатьстроки оттуда.

Вот пример того, что я обычно делаю:

// Assumption: I already have the file object I want to read
// Note: I'm not doing any error handling.
InputStream input = new FileInputStream(file);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int bytesRead = 0;
while( (bytesRead = input.read(buffer)) > 0){
    baos.write(buffer, 0, bytesRead);
}
StringReader stringReader = new StringReader( new String(baos.toByteArray()) );
BufferedReader bufferedReader = new BufferedReader( stringReader );
for(String line : bufferedReader.readLine()){
    // TODO: Handle each line appropriately or something
    Log.d("Reading Data Example", line);
}
1 голос
/ 06 января 2011

Одно из истинных значений CS, которое со временем становится все более верным, когда процессоры становятся быстрее: Медленный ввод / вывод .

Если вам нужна скорость, обычно лучше всего ставить делать как можно меньше операций ввода / вывода .В идеале выясните, насколько велик этот файл, выделите столько памяти, а затем прочитайте все это за один большой ввод-вывод .Тогда вы можете просто получить доступ к данным из памяти программы.Если у вас может не хватить ОЗУ для каждого приемлемого размера файла, вам, возможно, придется проделать немного больше работы, но к этому следует стремиться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...