黑马程序员技术交流社区

标题: IO流中的Writer写入问题。 [打印本页]

作者: 还是回去火星吧    时间: 2014-3-1 21:04
标题: IO流中的Writer写入问题。
本帖最后由 还是回去火星吧 于 2014-3-1 21:55 编辑

import java.io.*;
import java.util.*;
class Student{
        public static void main(String[] args){
                List<File> list=new ArrayList<File>();//集合里面有文件名和路径。        
        }
        public static void wirterToFile(List<File> list){
                BufferedWriter bfw=null;
                try {
                        bfw=new BufferedWriter(new FileWriter("D:\\WirterToFile.txt"));
                        for(File s:list){
                                sop(s);//
                                bfw.write(s); // 为什么这里不能直接写入s ? 求解释!//如果集合是字符串等类型,就可以直接传入s。                              
                                bfw.write(s.getName());//这样就可以,为什么?
                        }
                } catch (Exception e) {
                        // TODO: handle exception
                }
        }
        public static void sop(Object obj){
                System.out.println(obj);
        }
}

作者: e.c    时间: 2014-3-1 21:28
BufferedWriter没有write(File file)方法,所以直接尝试写入一个文件对象是错误的
而可以用write(String str)写入字符串,所以bfw.write(s.getName())这个肯定没问题

syso可以打印Object应该是因为:
    public static String valueOf(Object obj) {
        return (obj == null) ? "null" : obj.toString();
    }
    public void println(Object x) {
        String s = String.valueOf(x);
        synchronized (this) {
            print(s);
            newLine();
        }
    }
作者: 还是回去火星吧    时间: 2014-3-1 21:44
@俞帅明
作者: 还是回去火星吧    时间: 2014-3-1 21:50
本帖最后由 还是回去火星吧 于 2014-3-1 21:58 编辑
e.c 发表于 2014-3-1 21:28
BufferedWriter没有write(File file)方法,所以直接尝试写入一个文件对象是错误的
而可以用write(String st ...

能这么理解吗?
增for(File s:list)遍历集合后, s获取到的是文件?而不是字符串吗?
但是直接打印 sop(s); 与sop(s.getNmae());打印出来的内容是一致的,都是字符串!----------------------------
,谢谢!!!!!!
s是File类型,s.getName是字符串,这么理解就好了!


作者: 山治0712    时间: 2014-3-2 17:22
s是一个对象有不是一个字符串,参数应该是要写入的字符串啊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2