import 'dart:io'; import 'package:archive/archive.dart'; import 'package:jiffy/jiffy.dart'; // import 'package:tp5/core/utils.dart'; class CsvData { static Future extractTextFileFromZip( String zipPath, String textFileName) async { // Read the Zip file from disk. try { final bytes = File(zipPath).readAsBytesSync(); // Decode the Zip file final archive = ZipDecoder().decodeBytes(bytes); // Look for the text file in the archive for (final file in archive) { if (file.name == textFileName) { // Found the text file if (file.isFile) { final data = file.content as List; String content = String.fromCharCodes(data); return content; } } } } finally {} return ""; } static Jiffy? getLastModified(String zipPath, String textFileName) { final bytes = File(zipPath).readAsBytesSync(); final archive = ZipDecoder().decodeBytes(bytes); for (final file in archive) { if (file.name == textFileName) { if (file.isFile) { return Jiffy.parseFromDateTime( DateTime.fromMicrosecondsSinceEpoch(file.lastModTime)); } } } return null; } static List> csv2list(String text, {bool nulling = true, bool quotes = true, bool trim = true}) { List> out = []; final lines = text.split("\n"); for (var line in lines) { final cols = line.split(",").map((String? e) { if (e != null && quotes) { e = e.replaceAll('"', ""); } if (e != null && trim) { e = e.trim(); } if (nulling) { e = (e == "") ? null : e; } return e; }).toList(); // print("${out.length}: $cols"); if (cols.isNotEmpty && cols.length > 1) out.add(cols); } return out; } // Usage void main() { extractTextFileFromZip('path/to/your/zipfile.zip', 'your_text_file.txt'); } }