• 一个java swt桌面程序开发到打包的总结(2)


    三、关于文件与流的问题

    关于文件的操作,一长辈写的很全,我就抄一下: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);

    如果是下面一种,文件内容将不会换行

     

    -----仅用于学习记录。

  • 相关阅读:
    保存ADO的记录集为XML文件
    [C++] Undefined reference to vtable
    Csdn博客的一个bug
    深入解析ATL(第二版ATL8.0)(1.111.13节)
    不同操作系统下记事本的换行符号
    dom4j学习总结(一)
    关于firefox的copy/paste的问题
    php URL编码解码函数
    php连接MySQL数据库的一些问题
    使用 jQuery progressBar 做文件上传的进度条指示
  • 原文地址:https://www.cnblogs.com/overstep/p/2577055.html
Copyright © 2020-2023  润新知