add new feature: string << file