copy file

import io,,,,,,,

 

 

from https://pub.dev/packages/large_file_copy

Directory directory = await getApplicationDocumentsDirectory();
var dbPath = join(directory.path, "app.db");
if (FileSystemEntity.typeSync(dbPath) == FileSystemEntityType.notFound) {
  ByteData data = await rootBundle.load("assets/my_db_file.db");
  List<int> bytes = data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);
  await File(dbPath).writeAsBytes(bytes);
}

 

var file1 = File(join(tempDir.path, '0/2048.apk'));
var newFile = await file1.copy(join(tempDir.path, '4/1.apk'));


import 'package:flutter/material.dart';
import 'dart:io';
import 'dart:async';
import 'package:rxdart/rxdart.dart';
import 'package:path_provider/path_provider.dart';
import 'package:path/path.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:flutter/services.dart';

void main() => runApp(MaterialApp(home: MyApp(),));

/*
1. Copy aria2c executable to ``/mnt/sdcard`` on your device.
2. Run Android Terminal Emulator.
3. ``mkdir /data/data/jackpal.androidterm/aria2``
4. ``cat /mnt/sdcard/aria2c > /data/data/jackpal.androidterm/aria2/aria2c``
5. ``chmod 744 /data/data/jackpal.androidterm/aria2/aria2c``
6. Add the following commands to the initial command of Android
Terminal Emulator::

export HOME=/data/data/jackpal.androidterm/aria2; cd $HOME

7. Exit Android Terminal Emulator.
8. Run Android Terminal Emulator again.
9. See whether aria2c actually works by invoking ``./aria2c -v``
*/

class MyApp extends StatelessWidget {
  DataBloc bloc;

  checkPermission()async{
    var per = await PermissionHandler().checkPermissionStatus(PermissionGroup.storage);
    if(per!=PermissionStatus.granted){
      await PermissionHandler().requestPermissions([PermissionGroup.storage]);
    }
  }

  cp()async{
    await checkPermission();
    Directory tempDir = await getExternalStorageDirectory();
    String workDir = join(tempDir.path, '4');

//    var p = await Process.run('mkdir', [workDir]).then((ProcessResult e){
//      print(e.stderr);
//      print(e.exitCode);
//    });

    var file1 = await rootBundle.load('assets/aria2c');
    var buf = file1.buffer;
    File(join(workDir, 'xxx')).writeAsBytesSync(buf.asUint8List());
//    var newFile = await file1.copy(join(tempDir.path, '4/1.apk'));
    print('done');
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('sss'),),
      body: Container(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          crossAxisAlignment: CrossAxisAlignment.center,
          children: <Widget>[
            RaisedButton(child: Text('mkdir'),onPressed: (){
                cp();
            },),
            RaisedButton(child: Text('delete'),onPressed: (){

            },),
            Container(
                width: 50,height: 50,child: Image(image: AssetImage('assets/img/a.png',),fit: BoxFit.cover,)),
//            Container(
//                width: 50, height: 50,child: Text('   '),decoration: BoxDecoration(
//              image: DecorationImage(image: AssetImage('assets/img/a.png')),
//            ),),
          ],
        ),
      ),
    );
  }
}

class DataBloc {
  ReplaySubject dataBloc = ReplaySubject();
}

//void shell(String cmd, List<String> opts, void onExit(int exitCode))async{
//  var p = await Process.start(cmd, opts);
//  p.stdout.pipe(stdout);
//  stdin.pipe(p.stdin);
//  p.onExit = (exitCode)async{
//    await p.kill();
//    onExit(exitCode);
//  }
//}


//void shell(String cmd, List<String> opts, void onExit(int exitCode)) {
//  var p = Process.start(cmd, opts);
//  p.stdout.pipe(stdout);  // Process output to stdout.
//  stdin.pipe(p.stdin);    // stdin to process input.
//  p.onExit = (exitCode) {
//    p.close();
//    onExit(exitCode);
//  };
//}

  

posted @ 2019-05-20 14:56  CrossPython  阅读(486)  评论(0编辑  收藏  举报