Как скопировать файл из одного каталога в другой, используя собственный код в Android? - PullRequest
0 голосов
/ 21 марта 2012

Я хочу скопировать файл из одного каталога в другой в моей программе Native C.Я попытался использовать функцию system, но она не работает.

system("cp /mnt/test /mnt/test2"); // It's not working

Также хочу знать, что даже функция system поддерживается в bionic libc.

Любая помощь будет оценена.

1 Ответ

1 голос
/ 21 марта 2012

Оболочка Android не имеет команды cp. Поэтому, если возможно, попробуйте cat source_file > dest_file.

Или просто используйте этот код,

FILE *from, *to;
  char ch;


  if(argc!=3) {
    printf("Usage: copy <source> <destination>\n");
    exit(1);
  }

  /* open source file */
  if((from = fopen("Source File", "rb"))==NULL) {
    printf("Cannot open source file.\n");
    exit(1);
  }

  /* open destination file */
  if((to = fopen("Destination File", "wb"))==NULL) {
    printf("Cannot open destination file.\n");
    exit(1);
  }

  /* copy the file */
  while(!feof(from)) {
    ch = fgetc(from);
    if(ferror(from)) {
      printf("Error reading source file.\n");
      exit(1);
    }
    if(!feof(from)) fputc(ch, to);
    if(ferror(to)) {
      printf("Error writing destination file.\n");
      exit(1);
    }
  }

  if(fclose(from)==EOF) {
    printf("Error closing source file.\n");
    exit(1);
  }

  if(fclose(to)==EOF) {
    printf("Error closing destination file.\n");
    exit(1);
  }

Также упоминается

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

in AndroidManifest.xml file ..

EDIT:

Вы также можете использовать dd if=source_file of=dest_file.

Поддержка перенаправления не требуется.

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