File I/O (ফাইল ইনপুট/আউটপুট)

ডার্ট প্রোগ্রামিং (Dart Programming) - Computer Programming

370

File I/O (ফাইল ইনপুট/আউটপুট) in Dart

File I/O (Input/Output) হল একটি প্রক্রিয়া যার মাধ্যমে আপনি ফাইল তৈরি, পড়া, লেখা এবং মুছতে পারেন। Dart-এ ফাইল I/O পরিচালনার জন্য dart:io লাইব্রেরি ব্যবহার করা হয়। এটি ফাইল সিস্টেমের সাথে যোগাযোগ করার জন্য বিভিন্ন ফাংশন এবং ক্লাস সরবরাহ করে।

১. dartলাইব্রেরি

dart

লাইব্রেরিটি Dart-এ ফাইল, ডিরেক্টরি, সোকেট, HTTP, এবং অন্যান্য I/O সংক্রান্ত কার্যকলাপের জন্য ব্যবহার করা হয়।

 

২. ফাইল পড়া এবং লেখা

ফাইল লেখা

নিচে একটি উদাহরণ দেওয়া হলো কিভাবে Dart-এ একটি ফাইলে ডেটা লেখা যায়:

import 'dart:io';

void main() async {
  // Create a file
  File file = File('example.txt');

  // Write data to the file
  await file.writeAsString('Hello, Dart!');

  print('Data written to file.');
}

ফাইল পড়া

ফাইল থেকে ডেটা পড়ার উদাহরণ:

import 'dart:io';

void main() async {
  // Read data from the file
  File file = File('example.txt');

  if (await file.exists()) {
    String contents = await file.readAsString();
    print('File contents: $contents');
  } else {
    print('File does not exist.');
  }
}

৩. ফাইলের মধ্যে অ্যাপেন্ড করা

ফাইলের মধ্যে নতুন তথ্য যোগ করার জন্য writeAsString এর সাথে mode: FileMode.append ব্যবহার করা হয়:

import 'dart:io';

void main() async {
  File file = File('example.txt');

  // Append data to the file
  await file.writeAsString('\nAppending new data.', mode: FileMode.append);
  print('Data appended to file.');
}

৪. ডিরেক্টরি পরিচালনা

Dart-এ ডিরেক্টরি তৈরি, মুছা এবং পড়ার জন্যও I/O কমান্ড রয়েছে:

ডিরেক্টরি তৈরি করা

import 'dart:io';

void main() async {
  Directory dir = Directory('my_directory');

  // Create a directory
  if (!(await dir.exists())) {
    await dir.create();
    print('Directory created.');
  } else {
    print('Directory already exists.');
  }
}

ডিরেক্টরি তালিকা করা

import 'dart:io';

void main() async {
  Directory dir = Directory.current; // Current directory

  // List files in the directory
  List<FileSystemEntity> files = dir.listSync();
  for (var file in files) {
    print(file.path);
  }
}

৫. ত্রুটি পরিচালনা

ফাইল I/O এর সময় ত্রুটি ঘটতে পারে। সুতরাং, try-catch ব্লক ব্যবহার করে ত্রুটি পরিচালনা করা গুরুত্বপূর্ণ।

import 'dart:io';

void main() async {
  try {
    File file = File('non_existent_file.txt');
    String contents = await file.readAsString();
    print(contents);
  } catch (e) {
    print('An error occurred: $e');
  }
}

উপসংহার

Dart-এ File I/O পরিচালনা করা সহজ এবং কার্যকরী। dart:io লাইব্রেরির মাধ্যমে আপনি ফাইল তৈরি, পড়া, লেখা, এবং ডিরেক্টরি পরিচালনা করতে পারেন। এই বৈশিষ্ট্যগুলি ডেভেলপারদের জন্য তাদের অ্যাপ্লিকেশনগুলির ডেটা পরিচালনার ক্ষমতা বৃদ্ধি করে।

Content added By

Dart এ ফাইল পড়া এবং লেখা

Dart-এ ফাইল পড়া এবং লেখা একটি গুরুত্বপূর্ণ কার্যক্রম, যা dart:io লাইব্রেরি ব্যবহার করে করা হয়। এই লাইব্রেরিটি ফাইল সিস্টেমের সাথে কাজ করার জন্য বিভিন্ন ক্লাস এবং ফাংশন সরবরাহ করে। নিচে ফাইল পড়া এবং লেখার প্রক্রিয়া বিস্তারিতভাবে আলোচনা করা হলো।

১. dartলাইব্রেরি ইম্পোর্ট করা

প্রথমে, আপনাকে dart:io লাইব্রেরিটি ইম্পোর্ট করতে হবে:

import 'dart:io';

২. ফাইল লেখা

ফাইলে ডেটা লেখার জন্য File ক্লাস ব্যবহার করা হয়। নিচে একটি উদাহরণ দেওয়া হলো যেখানে একটি ফাইলে লেখা হয়:

উদাহরণ: ফাইলে লেখা

import 'dart:io';

void main() async {
  // Create a File object
  File file = File('example.txt');

  // Write data to the file
  await file.writeAsString('Hello, Dart!\nThis is a sample file.');

  print('Data written to file.');
}
  • এখানে, writeAsString ফাংশন ব্যবহার করে ফাইলে ডেটা লেখা হচ্ছে। await ব্যবহার করা হয়েছে যাতে অ্যাসিনক্রোনাস কাজ সম্পন্ন হওয়া পর্যন্ত অপেক্ষা করা হয়।

৩. ফাইল পড়া

ফাইল থেকে ডেটা পড়ার জন্য readAsString বা readAsLines ফাংশন ব্যবহার করা হয়।

উদাহরণ: ফাইল পড়া

import 'dart:io';

void main() async {
  // Create a File object
  File file = File('example.txt');

  // Check if the file exists
  if (await file.exists()) {
    // Read data from the file
    String contents = await file.readAsString();
    print('File contents:\n$contents');
  } else {
    print('File does not exist.');
  }
}
  • এখানে, readAsString ফাংশনটি পুরো ফাইলের কন্টেন্টকে একটি স্ট্রিং হিসেবে পড়ে।

৪. ফাইলের মধ্যে অ্যাপেন্ড করা

ফাইলের মধ্যে নতুন ডেটা যোগ করার জন্য writeAsString এর সাথে mode: FileMode.append ব্যবহার করতে হয়।

উদাহরণ: ফাইলে অ্যাপেন্ড করা

import 'dart:io';

void main() async {
  // Create a File object
  File file = File('example.txt');

  // Append data to the file
  await file.writeAsString('\nAppending new line to the file.', mode: FileMode.append);
  
  print('Data appended to file.');
}

৫. ডিরেক্টরি এবং ফাইল তালিকা করা

আপনি ডিরেক্টরির সমস্ত ফাইলের তালিকা তৈরি করতে পারেন।

উদাহরণ: ডিরেক্টরি তালিকা করা

import 'dart:io';

void main() async {
  // Get the current directory
  Directory currentDir = Directory.current;

  // List files in the current directory
  List<FileSystemEntity> files = currentDir.listSync();
  
  for (var file in files) {
    print(file.path);
  }
}

৬. ত্রুটি পরিচালনা

ফাইল I/O এর সময় ত্রুটি ঘটতে পারে। তাই try-catch ব্লক ব্যবহার করে ত্রুটি পরিচালনা করা গুরুত্বপূর্ণ।

উদাহরণ: ত্রুটি পরিচালনা

import 'dart:io';

void main() async {
  try {
    File file = File('non_existent_file.txt');
    String contents = await file.readAsString();
    print(contents);
  } catch (e) {
    print('An error occurred: $e');
  }
}

উপসংহার

Dart-এ ফাইল পড়া এবং লেখা একটি সহজ এবং কার্যকর প্রক্রিয়া। dart:io লাইব্রেরির মাধ্যমে ফাইল তৈরি, পড়া, লেখা, এবং ডিরেক্টরি পরিচালনা করা যায়। এই বৈশিষ্ট্যগুলি ডেভেলপারদের জন্য তাদের অ্যাপ্লিকেশনগুলির ডেটা পরিচালনার ক্ষমতা বৃদ্ধি করে।

Content added By

লাইব্রেরি ব্যবহার করে ফাইল ম্যানিপুলেশন

Dart-এ dart

লাইব্রেরিটি ফাইল সিস্টেমের সাথে কাজ করার জন্য বিভিন্ন ক্লাস এবং ফাংশন সরবরাহ করে। এর মাধ্যমে আপনি ফাইল তৈরি, পড়া, লেখা, মুছা এবং অন্যান্য ফাইল ম্যানিপুলেশন কার্যক্রম সম্পাদন করতে পারেন। নিচে Dartলাইব্রেরি ব্যবহার করে ফাইল ম্যানিপুলেশনের কিছু সাধারণ কার্যক্রম আলোচনা করা হলো।

 

১. লাইব্রেরি ইম্পোর্ট করা

প্রথমে, আপনাকে dart:io লাইব্রেরিটি ইম্পোর্ট করতে হবে:

import 'dart:io';

২. ফাইল তৈরি করা

নতুন ফাইল তৈরি করার জন্য File ক্লাস ব্যবহার করা হয়।

উদাহরণ: ফাইল তৈরি করা

void main() async {
  File file = File('new_file.txt');

  // Create the file
  await file.create();
  print('File created: ${file.path}');
}

৩. ফাইল লেখা

ফাইলে ডেটা লেখার জন্য writeAsString বা writeAsStringSync ফাংশন ব্যবহার করা হয়।

উদাহরণ: ফাইলে লেখা

void main() async {
  File file = File('new_file.txt');

  // Write data to the file
  await file.writeAsString('Hello, Dart!\nThis is a sample file.');
  print('Data written to file.');
}

৪. ফাইল পড়া

ফাইল থেকে ডেটা পড়ার জন্য readAsString বা readAsLines ফাংশন ব্যবহার করা হয়।

উদাহরণ: ফাইল পড়া

void main() async {
  File file = File('new_file.txt');

  // Read data from the file
  String contents = await file.readAsString();
  print('File contents:\n$contents');
}

৫. ফাইলের মধ্যে অ্যাপেন্ড করা

ফাইলের মধ্যে নতুন তথ্য যোগ করার জন্য writeAsString এর সাথে mode: FileMode.append ব্যবহার করা হয়।

উদাহরণ: ফাইলে অ্যাপেন্ড করা

void main() async {
  File file = File('new_file.txt');

  // Append data to the file
  await file.writeAsString('\nAppending new line to the file.', mode: FileMode.append);
  print('Data appended to file.');
}

৬. ফাইল মুছা

ফাইল মুছার জন্য delete ফাংশন ব্যবহার করা হয়।

উদাহরণ: ফাইল মুছা

void main() async {
  File file = File('new_file.txt');

  // Delete the file
  await file.delete();
  print('File deleted: ${file.path}');
}

৭. ডিরেক্টরি পরিচালনা

Dart-এ ডিরেক্টরি তৈরি, পড়া এবং মুছার জন্যও I/O কমান্ড রয়েছে।

উদাহরণ: ডিরেক্টরি তৈরি করা

void main() async {
  Directory dir = Directory('my_directory');

  // Create a directory
  if (!(await dir.exists())) {
    await dir.create();
    print('Directory created.');
  } else {
    print('Directory already exists.');
  }
}

উদাহরণ: ডিরেক্টরি তালিকা করা

void main() async {
  Directory dir = Directory.current; // Current directory

  // List files in the directory
  List<FileSystemEntity> files = dir.listSync();
  for (var file in files) {
    print(file.path);
  }
}

৮. ত্রুটি পরিচালনা

ফাইল I/O এর সময় ত্রুটি ঘটতে পারে, তাই try-catch ব্লক ব্যবহার করে ত্রুটি পরিচালনা করা গুরুত্বপূর্ণ।

উদাহরণ: ত্রুটি পরিচালনা

void main() async {
  try {
    File file = File('non_existent_file.txt');
    String contents = await file.readAsString();
    print(contents);
  } catch (e) {
    print('An error occurred: $e');
  }
}

উপসংহার

Dart

লাইব্রেরি ফাইল ম্যানিপুলেশন করার জন্য একটি শক্তিশালী এবং কার্যকরী টুল। এটি ফাইল তৈরি, পড়া, লেখা, মুছা এবং ডিরেক্টরি পরিচালনার জন্য বিভিন্ন ফাংশন সরবরাহ করে। এই বৈশিষ্ট্যগুলি ডেভেলপারদের জন্য তাদের অ্যাপ্লিকেশনগুলির ডেটা পরিচালনার ক্ষমতা বৃদ্ধি করে।

Content added By

File Streams এবং Asynchronous I/O in Dart

File Streams এবং Asynchronous I/O Dart-এ ফাইল পরিচালনার কার্যক্রমকে আরও কার্যকর এবং প্রতিক্রিয়াশীল করতে সহায়ক। এই ধারণাগুলি ব্যবহার করে আপনি ফাইল পড়া এবং লেখা কার্যক্রমগুলি পিছনে রাখার মাধ্যমে আপনার অ্যাপ্লিকেশনকে দ্রুত এবং সজাগ রাখতে পারেন। নিচে File Streams এবং Asynchronous I/O এর ব্যবহার আলোচনা করা হলো।

১. File Streams

File Streams হল ডেটা প্রবাহ যা ফাইল থেকে ধারাবাহিকভাবে তথ্য পড়ার বা লেখার জন্য ব্যবহৃত হয়। Dart-এ ফাইল স্ট্রিম ব্যবহার করে আপনি বড় ফাইলগুলিকে কার্যকরভাবে পরিচালনা করতে পারেন, কারণ এটি মেমরিতে পুরো ফাইল লোড না করে একসাথে কিছু ডেটা পড়তে বা লিখতে সক্ষম।

উদাহরণ: File Stream ব্যবহার করে ফাইল পড়া

import 'dart:io';

void main() async {
  // Create a file stream
  File file = File('example.txt');
  Stream<String> lines = file.openRead()
      .transform(utf8.decoder) // Decode bytes to UTF-8
      .transform(LineSplitter()); // Convert stream to individual lines

  // Listen for data in the stream
  await for (String line in lines) {
    print(line); // Output each line
  }
}

২. Asynchronous I/O

Asynchronous I/O হল I/O অপারেশনের সম্পন্ন হওয়ার জন্য অপেক্ষা না করে অন্য কাজগুলি করতে সক্ষম হওয়া। Dart-এ, আপনি Future এবং async/await এর মাধ্যমে অ্যাসিনক্রোনাস কার্যক্রম পরিচালনা করতে পারেন।

উদাহরণ: Asynchronous File Writing

import 'dart:io';

void main() async {
  File file = File('example_async.txt');

  // Asynchronously write to the file
  await file.writeAsString('Hello, Dart!\nThis file is written asynchronously.');

  print('Data written to file asynchronously.');
}

৩. Combining Streams and Asynchronous I/O

আপনি ফাইল স্ট্রিম এবং অ্যাসিনক্রোনাস I/O-কে একসাথে ব্যবহার করতে পারেন। উদাহরণস্বরূপ, একটি ফাইল থেকে তথ্য পড়ার সময় নতুন ডেটা অ্যাপেন্ড করা:

উদাহরণ: Stream এবং Asynchronous I/O ব্যবহার

import 'dart:async';
import 'dart:io';

void main() async {
  File file = File('example_stream.txt');

  // Write initial data to the file
  await file.writeAsString('Line 1\nLine 2\n', mode: FileMode.write);

  // Create a stream to read the file
  Stream<String> lines = file.openRead()
      .transform(utf8.decoder)
      .transform(LineSplitter());

  // Listen for data in the stream
  await for (String line in lines) {
    print('Read from file: $line');
  }

  // Append data to the file asynchronously
  await file.writeAsString('Line 3\n', mode: FileMode.append);
  print('New line appended to the file.');
}

৪. Advantages of File Streams and Asynchronous I/O

  • Memory Efficiency: Streams allow you to work with large files without loading the entire file into memory, which is especially useful for large datasets.
  • Responsiveness: Asynchronous I/O keeps your application responsive by allowing other tasks to run while waiting for I/O operations to complete.
  • Scalability: By using asynchronous programming patterns, you can handle multiple I/O operations concurrently, improving the scalability of your application.

উপসংহার

File Streams এবং Asynchronous I/O Dart-এ ফাইল পরিচালনার জন্য অত্যন্ত কার্যকরী এবং সক্ষম। এই দুটি কৌশল ব্যবহার করে, আপনি ফাইল পড়া এবং লেখার সময় মেমরি ব্যবস্থাপনাকে অপ্টিমাইজ করতে পারেন এবং আপনার অ্যাপ্লিকেশনকে দ্রুত ও প্রতিক্রিয়াশীল রাখতে পারেন।

Content added By

Directory Management এবং File System Navigation Dart-এ ফাইল এবং ডিরেক্টরি পরিচালনার জন্য গুরুত্বপূর্ণ কার্যক্রম। Dart-এর dart:io লাইব্রেরি ব্যবহার করে আপনি ডিরেক্টরি তৈরি, মুছা, পড়া এবং ফাইল সিস্টেমে নেভিগেট করতে পারেন। নিচে এই দুটি ধারণার প্রয়োগ নিয়ে বিস্তারিত আলোচনা করা হলো।

১. Directory Management

Directory Management হল ডিরেক্টরি তৈরি, মুছা এবং পরিচালনার প্রক্রিয়া। Dart-এ Directory ক্লাস ব্যবহার করে আপনি এই কার্যক্রমগুলি সম্পন্ন করতে পারেন।

উদাহরণ: ডিরেক্টরি তৈরি করা

import 'dart:io';

void main() async {
  // Create a new directory
  Directory dir = Directory('my_new_directory');

  if (!(await dir.exists())) {
    await dir.create();
    print('Directory created: ${dir.path}');
  } else {
    print('Directory already exists.');
  }
}

উদাহরণ: ডিরেক্টরি মুছা

import 'dart:io';

void main() async {
  // Create a directory object
  Directory dir = Directory('my_new_directory');

  // Delete the directory
  if (await dir.exists()) {
    await dir.delete(recursive: true); // Recursive deletes the directory and its contents
    print('Directory deleted: ${dir.path}');
  } else {
    print('Directory does not exist.');
  }
}

২. File System Navigation

File System Navigation হল ফাইল সিস্টেমের মধ্যে ডিরেক্টরি এবং ফাইলগুলির মধ্যে নেভিগেট করার প্রক্রিয়া। Dart-এ Directory ক্লাস ব্যবহার করে আপনি ডিরেক্টরি তালিকা, বর্তমান ডিরেক্টরি পড়া এবং অন্যান্য কার্যক্রম করতে পারেন।

উদাহরণ: বর্তমান ডিরেক্টরি পড়া

import 'dart:io';

void main() {
  // Get the current directory
  Directory currentDir = Directory.current;

  print('Current directory: ${currentDir.path}');
}

উদাহরণ: একটি ডিরেক্টরির ফাইলের তালিকা তৈরি করা

import 'dart:io';

void main() {
  // Get the current directory
  Directory currentDir = Directory.current;

  // List files in the current directory
  List<FileSystemEntity> files = currentDir.listSync();

  print('Files in current directory:');
  for (var file in files) {
    print(file.path);
  }
}

৩. Nested Directories Management

Dart-এ নেস্টেড ডিরেক্টরি তৈরি করা এবং পরিচালনার উদাহরণ:

উদাহরণ: Nested Directory তৈরি করা

import 'dart:io';

void main() async {
  // Create nested directories
  Directory nestedDir = Directory('parent_directory/child_directory');

  if (!(await nestedDir.exists())) {
    await nestedDir.create(recursive: true);
    print('Nested directories created: ${nestedDir.path}');
  } else {
    print('Nested directories already exist.');
  }
}

৪. File and Directory Permissions

ফাইল এবং ডিরেক্টরির অনুমতি পরিচালনা করতে Dart-এ File এবং Directory ক্লাসের বিভিন্ন ফাংশন ব্যবহার করা হয়।

উদাহরণ: ডিরেক্টরি অনুমতি পরিবর্তন

import 'dart:io';

void main() async {
  Directory dir = Directory('my_new_directory');

  // Change permissions
  await dir.create();
  await dir.setPermissions(FileMode.write); // Set write permissions
  print('Permissions changed for: ${dir.path}');
}

উপসংহার

Directory Management এবং File System Navigation Dart-এ ফাইল এবং ডিরেক্টরি পরিচালনার জন্য গুরুত্বপূর্ণ কার্যক্রম। Dart-এর dart:io লাইব্রেরি ব্যবহার করে আপনি সহজেই ডিরেক্টরি তৈরি, মুছা এবং ফাইল সিস্টেমের মধ্যে নেভিগেট করতে পারেন। এই বৈশিষ্ট্যগুলি ডেভেলপারদের জন্য তাদের অ্যাপ্লিকেশনগুলির ফাইল এবং ডেটা পরিচালনার ক্ষমতা বৃদ্ধি করে।

Content added By
Promotion

Are you sure to start over?

Loading...