如何使用Android中的本机代码将文件从一个目录复制到另一个目录?

时间:2012-03-21 11:40:53

标签: android c linux android-ndk

我想在我的Native C程序中将文件从on目录复制到另一个目录。 我尝试使用system函数,但它无效。

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

另外我想知道bionic libc支持system函数。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

Android shell没有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>

AndroidManifest.xml 文件..

修改

您也可以使用dd if=source_file of=dest_file

不需要重定向支持。