input: Write a function to implement a FileSystem class that provides methods for saving, deleting, and finding task data stored in a file system. The class should be initialized with a parameter dictionary that includes a 'taskDir' key specifying the directory where task data should be stored. The class should support the following methods:
  - save_task: Saves task data. If the data dictionary does not include an 'id' key, one will be generated and added.
  - delete_task: Deletes task data by ID.
  - find_by_id: Finds task data by ID and returns it as a dictionary.
  - find_by_ids: Finds task data for multiple IDs and returns a list of dictionaries.
  - all_task_data: Returns all task data, sorted by ID in ascending order by default or in descending order if the 'order' parameter is set to 'desc'.
  - task_data: Gets task data for a specific ID without raising an error if the data is not found, returning None instead.
  
  assert save_task({'name': 'Task1', 'status': 'pending'})['id'] is not None
  assert delete_task('1')==None
  assert find_by_id('2')=={'id': '2', 'name': 'Task2', 'status': 'completed'}
  assert find_by_ids(['3', '4'])==[{'id': '3', 'name': 'Task3', 'status': 'pending'}, {'id': '4', 'name': 'Task4', 'status': 'pending'}]
  assert all_task_data() is not None
  assert task_data('5')==None
output: 
  import os
  import json
  import uuid
  
  class FileSystem:
      def __init__(self, params):
          self.taskDir = params['taskDir']
          if not os.path.exists(self.taskDir):
              os.makedirs(self.taskDir)
  
      def save_task(self, data):
          if 'id' not in data:
              data['id'] = str(uuid.uuid4())
          with open(os.path.join(self.taskDir, data['id']), 'w') as f:
              json.dump(data, f)
          return data
  
      def delete_task(self, task_id):
          file_path = os.path.join(self.taskDir, task_id)
          if os.path.exists(file_path):
              os.remove(file_path)
  
      def find_by_id(self, task_id):
          file_path = os.path.join(self.taskDir, task_id)
          if os.path.exists(file_path):
              with open(file_path, 'r') as f:
                  return json.load(f)
          return None
  
      def find_by_ids(self, task_ids):
          return [self.find_by_id(task_id) for task_id in task_ids if self.find_by_id(task_id) is not None]
  
      def all_task_data(self, order='asc'):
          files = os.listdir(self.taskDir)
          data = [self.find_by_id(file) for file in files]
          data.sort(key=lambda x: x['id'], reverse=(order == 'desc'))
          return data
  
      def task_data(self, task_id):
          return self.find_by_id(task_id)
  