三、关于文件与流的问题
关于文件的操作,一长辈写的很全,我就抄一下:http://www.cnblogs.com/lovebread/archive/2009/11/23/1609122.html
1) 加载指定目录下面的所有文件
1 //得到待导入的目标文件 2 File fromFile=new File(frompath); 3 if(!fromFile.isDirectory()){ 4 throw new Exception("请指定文件夹!"); 5 } 6 //加载文件 7 File[] fs=fromFile.listFiles(); 8 List<String> fileNames=new ArrayList<String>(); //文件名 9 List<File> files=new ArrayList<File>(); //文件 10 //System.out.println("fs.length-->"+fs.length); 11 for (File f : fs) { 12 String fn=f.getName(); 13 if((!f.isDirectory())&&(fn.endsWith(".txt"))){ //以.txt结尾,不是文件夹 14 int i=fn.lastIndexOf("."); 15 if((i>-1)&&i<fn.length()) 16 fn=fn.substring(0,i); 17 //System.out.println("f.getName-->"+fn); 18 fileNames.add(fn); 19 files.add(f); 20 } 21 }
2) 写入文件
1 //复制文件到指定目录,先得到目录,再复制,这里有个要注意的地方,要先在得到的目录下面new一个文件,然后才能把Java File对象的内容写到这个文件里面 2 String tofilepath=sysRoot+"\\course\\user\\"; 3 int i=0; 4 BufferedInputStream inBuff = null; 5 BufferedOutputStream outBuff = null; 6 for(i=0;i<files.size();i++){ 7 File file=new File(tofilepath,fileNames.get(i)+".le"); 8 if(!file.exists()){ 9 file.createNewFile(); 10 } 11 inBuff=new BufferedInputStream(new FileInputStream(files.get(i))); 12 outBuff=new BufferedOutputStream(new FileOutputStream(file)); 13 byte[] buff=new byte[1024]; 14 int len=0; 15 while((len=inBuff.read(buff))!=-1){ 16 outBuff.write(buff, 0, len); 17 } 18 outBuff.flush(); 19 } 20 if (inBuff != null) 21 inBuff.close(); 22 if (outBuff != null) 23 outBuff.close();
3) 文件里面的内容换行:
String nextLine=System.getProperty("line.separator");//用于换行 ,这个需要配合下面的一起使用,写入到文件时才会换行。
在windows下面\r\n是换行,所以也可以是:String newxLine="\r\n";
4) 写入文件:
String tempStr="这个是第一行!";
tempStr+=nextLine+"这个是第二行!"
BufferedOutputStream writer=new BufferedOutputStream(new FileOutputStream(conf)); writer.write(tempStr.getBytes(),0,tempStr.length());
注意,是:writer.write(tempStr.getBytes(),0,tempStr);
不是:writer.write(tempStr);
如果是下面一种,文件内容将不会换行
-----仅用于学习记录。