10

我正在使用image_picker: ^0.6.2+3包从图库中挑选图像/拍照。

File picture = await ImagePicker.pickImage(
  maxWidth: 800,
  imageQuality: 10,
  source: source, // source can be either ImageSource.camera or ImageSource.gallery
  maxHeight: 800,
);

我得到picture.path作为

/Users/[一些路径]/tmp/image_picker_A0EBD0C1-EF3B-417F-9F8A-5DFBA889118C-18492-00001AD95CF914D3.jpg

现在我想将图像重命名为case01wd03id01.jpg

注意:我不想将其移动到新文件夹

我该如何重命名它?我在官方文档中找不到它。

4

4 回答 4

12

首先导入路径包。

import 'package:path/path.dart' as path;

然后创建一个新的目标路径来重命名文件。

File picture = await ImagePicker.pickImage(
        maxWidth: 800,
        imageQuality: 10,
        source: ImageSource.camera,
        maxHeight: 800,
);
print('Original path: ${picture.path}');
String dir = path.dirname(picture.path);
String newPath = path.join(dir, 'case01wd03id01.jpg');
print('NewPath: ${newPath}');
picture.renameSync(newPath);
于 2020-01-24T12:44:47.760 回答
4

Manish Raj 的回答对我不起作用,因为image_picker: ^0.6.7他们最近在获取返回的图像或视频时更改了 API,PickedFile而不是File.

我使用的新方法是将其转换PickedFileFile然后将其复制到具有新名称的应用程序目录中。此方法需要path_provider.dart

import 'package:path_provider/path_provider.dart';

...
...

PickedFile pickedFile = await _picker.getImage(source: ImageSource.camera);

// Save and Rename file to App directory
String dir = (await getApplicationDocumentsDirectory()).path;
String newPath = path.join(dir, 'case01wd03id01.jpg');
File f = await File(pickedF.path).copy(newPath);

我知道问题表明他们不想将其移动到新文件夹,但这是我能找到的使重命名工作的最佳方法。

于 2020-06-19T13:54:28.403 回答
4

使用此功能仅重命名文件名而不更改文件路径。您可以在有或没有 image_picker 的情况下使用此功能。

import 'dart:io';

Future<File> changeFileNameOnly(File file, String newFileName) {
  var path = file.path;
  var lastSeparator = path.lastIndexOf(Platform.pathSeparator);
  var newPath = path.substring(0, lastSeparator + 1) + newFileName;
  return file.rename(newPath);
}

在您的 dart sdk 上的 file.dart 中阅读更多文档。希望能有所帮助,关注

于 2021-08-18T08:29:10.460 回答
1

导入路径包

import 'package:path/path.dart' as path;

下面的代码

 final file =File("filepath here"); //your file path
 String dir = path.dirname(file.path); //get directory
 String newPath =path.join(dir, 'new file name'); //rename
 print(newPath); //here the newpath
 file.renameSync(newPath);
于 2022-01-14T05:16:53.373 回答