在Flutter中重命名文件或图像

7gyucuyw  于 2023-04-07  发布在  Flutter
关注(0)|答案(6)|浏览(315)

我正在使用***image_picker从gallery中选取图像/拍摄照片:^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.pathas

/Users/[some path]/tmp/image_picker_A0EBD0C1-EF3B-417F-9F8A-5DFBA889118C-18492-00001AD95CF914D3.jpg

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

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

怎么重命名?官方文档里找不到。

93ze6v8z

93ze6v8z1#

首先导入path包。

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);
vzgqcmou

vzgqcmou2#

使用此函数仅重命名文件,而不更改文件的路径。您可以使用此函数,也可以不使用 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中阅读更多文档。

qrjkbowd

qrjkbowd3#

自从image_picker: ^0.6.7以来,Manish Raj's answer对我不起作用。他们最近在获取图像或视频时更改了API,返回PickedFile而不是File
我使用的新方法是将PickedFile转换为File,然后用新名称将其复制到applications目录。此方法需要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);

我知道问题是他们不想把它移到一个新的文件夹,但这是我能找到的使重命名工作的最好方法。

ijnw1ujt

ijnw1ujt4#

这对我很有效

String dir = (await getApplicationDocumentsDirectory()).path;
String newPath = path.join(dir,(DateTime.now().microsecond.toString()) + '.' + file.path.split('.').last);
File f = await File(file.path).copy(newPath);
lyr7nygr

lyr7nygr5#

导入路径包:

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 is the newpath
 file.renameSync(newPath);
bsxbgnwa

bsxbgnwa6#

对于任何人谁没有运气与上述选项

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

final extension = image!.path.split('.').last;
final newFile = File('${Directory.systemTemp.path}/new_name_here.$ext');

await image.saveTo(newFile.path);
print("New path: ${newFile.path}");

return newFile;

newFile将保存具有新名称的图像。注意:picture是final而不是File。

相关问题