Как я могу импортировать данные из файла CSV в приложение Adobe Air? - PullRequest
3 голосов
/ 24 января 2011

Я собираюсь написать приложение во Flash Builder и хочу иметь возможность импортировать данные CSV в базу данных SQLite в Adobe Air / flashbuilder.

Я никогда не делал ничего подобного и не совсем уверен, с чего начать. Я хочу сделать некоторые манипуляции с данными, прежде чем я вставлю их. Так что мне действительно нужно знать, какие шаги (классы и функции) мне нужно использовать для разбора данных из файла CSV в массив, которым можно манипулировать в ActionScript?

Ответы [ 2 ]

1 голос
/ 24 января 2011

[Обновление: мой ответ предполагает использование HTML / Javascript AIR, а не Flash / Actionscript. На стороне AS3 могут быть лучшие ответы ...]

Вы всегда можете воспользоваться низкоуровневым подходом: прочитать его с помощью FileStream и написать CSV-анализатор самостоятельно. Я сомневаюсь, что вы найдете уже существующую библиотеку для ввода произвольного CSV в SQLite, но, возможно, я ошибаюсь (я не смотрел).

Основы, с которых вы хотите начать для своей программы чтения FileStream, были бы похожи на этот пример кода, который читает строку во время асинхронного ввода. Пример читает из STDOUT отдельного процесса, но должен применяться к FileStream напрямую.

this.process.addEventListener(air.ProgressEvent.STANDARD_OUTPUT_DATA, function(event) {
   // call into _stdoutHandler...
});

Foo.prototype._stdoutHandler = function() {
   var nBytes = this.process.standardOutput.bytesAvailable;
   var msg = this.process.standardOutput.readUTFBytes(nBytes);
   // The native process might send us partial lines, due to async IO.
   // Reconstruct the whole lines.
   this._sofar += msg;
   while (true) {
      var idx = this._sofar.indexOf("\n");
      if (idx < 0)
         break;
      if (idx > 0) { // skips blank lines
         var line = this._sofar.substring(0, idx);
         this._foundLine(line);
      }
      if (this._sofar.length > idx + 1) {
         this._sofar = this._sofar.substring(idx+1);
      } else {
         this._sofar = "";
      }
   }
   var lines = this._sofar.split(/\n/);
   if (lines.length > 1) {
      air.trace("programming error: we should have already handled all newlines");
   }
   this._sofar = lines[lines.length - 1];
};

Foo.prototype._foundLine = function() {
   // process a single line of input here...
};
1 голос
/ 24 января 2011

Я использую casalib для многих вещей, включая загрузку.Вы можете использовать стандартный материал as3, но это делает это намного проще.Посмотрите на CasaLoader .

Затем можно использовать некоторое разбиение строк для извлечения строк / столбцов

.Посмотрите по этой ссылке: http://ntt.cc/2008/07/08/sqlite-example-for-adobe-air-working-with-local-sql-databases-with-source-code.html

Вы можете игнорировать mxml вещи

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