input: Write a function to implement a FileSystem class in Python that provides methods for saving, deleting, and finding task data. The class should be initialized with a dictionary containing a 'taskDir' key specifying the directory where task data is stored. The class should support the following methods:
  - save_task(data): Save task data. If the data does not include an 'id' key, generate one.
  - delete_task(task_id): Delete task data by its ID.
  - find_by_id(task_id): Find task data by its ID.
  - find_by_ids(task_ids): Find task data for multiple IDs.
  - all_task_data(order='asc'): Find all task data, optionally sorted in ascending or descending order by ID.
  - task_data(task_id): Get task data by its ID without raising an error if not found.
  
  assert save_task({"name": "Task1", "description": "Description1"})=={"name": "Task1", "description": "Description1", "id": 1}
  assert delete_task(1)==None
  assert find_by_id(1)==None
  assert find_by_ids([1, 2])==[]
  assert all_task_data(order='asc')==[]
  assert task_data(1)==None
output: 
  class FileSystem:
      def __init__(self, config):
          self.taskDir = config['taskDir']
          self.tasks = {}
          self.next_id = 1
  
      def save_task(self, data):
          if 'id' not in data:
              data['id'] = self.next_id
              self.next_id += 1
          self.tasks[data['id']] = data
          return data
  
      def delete_task(self, task_id):
          if task_id in self.tasks:
              del self.tasks[task_id]
  
      def find_by_id(self, task_id):
          return self.tasks.get(task_id)
  
      def find_by_ids(self, task_ids):
          return [self.tasks.get(tid) for tid in task_ids if tid in self.tasks]
  
      def all_task_data(self, order='asc'):
          sorted_tasks = sorted(self.tasks.values(), key=lambda x: x['id'], reverse=(order == 'desc'))
          return sorted_tasks
  
      def task_data(self, task_id):
          return self.tasks.get(task_id)
  