input: Write a function that uses the FileSystem class to perform various operations on task data. The function should create an instance of the FileSystem class with a specified directory, save task data, delete task data, find task data by ID, find task data by multiple IDs, find all task data, and get task data for a specific ID without raising an error if the data is not found. The function should be able to handle exceptions related to repository read errors and task not found errors. If the specified directory does not exist, it should be created.
  
  Here is the function header:
  
  
  def task_data_operations(taskDir, data_to_save, task_id_to_delete, task_id_to_find, task_ids_to_find, order):
  
  
  Here are the assert test cases:
  
  
  assert task_data_operations('~/jsub/', {'name': 'Task1'}, 1, 1, [1, 2], 'asc') == [{'id': 1, 'name': 'Task1'}, None]
  assert task_data_operations('~/jsub/', {'name': 'Task2'}, 2, 1, [], 'desc') == [{'id': 1, 'name': 'Task1'}]
  assert task_data_operations('~/jsub/', {'name': 'Task3'}, 3, 3, [1, 3], 'asc') == [None, {'id': 3, 'name': 'Task3'}]
  assert task_data_operations('~/jsub/', {'name': 'Task4'}, 4, 4, [4], 'desc') == [{'id': 4, 'name': 'Task4'}]
  assert task_data_operations('~/jsub/', {'name': 'Task5'}, 5, 5, [1, 5], 'asc') == [None, {'id': 5, 'name': 'Task5'}]
  
  
  The function should return a list of dictionaries containing the task data, or None if the data is not found.
output: def task_data_operations(taskDir, data_to_save, task_id_to_delete, task_id_to_find, task_ids_to_find, order):
      from pathlib import Path
      import os
      import json
  
      class FileSystem:
          def __init__(self, directory):
              self.directory = Path(directory).expanduser()
              self.directory.mkdir(parents=True, exist_ok=True)
  
          def save_task(self, task_id, data):
              with open(self.directory / f'{task_id}.json', 'w') as f:
                  json.dump(data, f)
  
          def delete_task(self, task_id):
              try:
                  (self.directory / f'{task_id}.json').unlink()
              except FileNotFoundError:
                  pass
  
          def find_task(self, task_id):
              try:
                  with open(self.directory / f'{task_id}.json', 'r') as f:
                      return json.load(f)
              except FileNotFoundError:
                  return None
  
          def find_all_tasks(self):
              tasks = []
              for file in self.directory.glob('*.json'):
                  with open(file, 'r') as f:
                      tasks.append(json.load(f))
              return tasks
  
      fs = FileSystem(taskDir)
      fs.save_task(task_id_to_find, data_to_save)
      fs.delete_task(task_id_to_delete)
  
      result = []
      for task_id in [task_id_to_find] + task_ids_to_find:
          task_data = fs.find_task(task_id)
          if task_data:
              task_data['id'] = task_id
          result.append(task_data)
  
      if order == 'desc':
          result.reverse()
  
      return result