input: Write a function to manage a task storage system using a file system. The class FileSystem should provide methods for saving, deleting, and finding task data. The class requires a parameter dictionary containing a 'taskDir' key specifying the directory where task data is stored. The class should include the following methods: save_task, delete_task, find_by_id, find_by_ids, all_task_data, and task_data. 
  
  assert FileSystem({'taskDir': '~/tasks/'}).save_task({'name': 'Task1', 'description': 'Description1'})['id'] == 1
  assert FileSystem({'taskDir': '~/tasks/'}).find_by_id(1)['name'] == 'Task1'
  assert FileSystem({'taskDir': '~/tasks/'}).delete_task(1) is None
  assert FileSystem({'taskDir': '~/tasks/'}).task_data(1) is None
  assert FileSystem({'taskDir': '~/tasks/'}).all_task_data() == []
  assert FileSystem({'taskDir': '~/tasks/'}).find_by_ids([1]) == []
output: 
  def __init__(self, params):
      self.taskDir = params['taskDir']
      if not os.path.exists(self.taskDir):
          os.makedirs(self.taskDir)
  
  def save_task(self, task):
      task_id = len(os.listdir(self.taskDir)) + 1
      task['id'] = task_id
      with open(os.path.join(self.taskDir, f'task_{task_id}.json'), 'w') as f:
          json.dump(task, f)
      return task
  
  def delete_task(self, task_id):
      task_file = os.path.join(self.taskDir, f'task_{task_id}.json')
      if os.path.exists(task_file):
          os.remove(task_file)
  
  def find_by_id(self, task_id):
      task_file = os.path.join(self.taskDir, f'task_{task_id}.json')
      if os.path.exists(task_file):
          with open(task_file, 'r') as f:
              return json.load(f)
      return None
  
  def find_by_ids(self, task_ids):
      tasks = []
      for task_id in task_ids:
          task = self.find_by_id(task_id)
          if task:
              tasks.append(task)
      return tasks
  
  def all_task_data(self):
      tasks = []
      for task_file in os.listdir(self.taskDir):
          with open(os.path.join(self.taskDir, task_file), 'r') as f:
              tasks.append(json.load(f))
      return tasks
  
  def task_data(self, task_id):
      return self.find_by_id(task_id)
  