Java - IO入门实现简单的转存

不多bibi直接上代码~

package fileStream;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.UUID;

public class FileSaveUtils {
      /**
      * 接收路径
      * 这里需要接收一个绝对路径或相对路径只要能找到文件即可
      * @return 
      * @throws IOException 
      */
      public static String fileInputPath(String is) {
            //将接收到的路径处理分离
            String[] newIs=is.split("/");
            String name=newIs[newIs.length-1];
            //获取拓展名
            File file = new File(name);
            String fileName = file.getName();
            String suffix = fileName.substring(fileName.lastIndexOf(".") + 1);
            try {
                  //这里返回了一个文件名及拓展名xxx.ppt
                  String fileOutputPath = fileOutputPath(suffix,is);
                  return fileOutputPath;
            } catch (IOException e) {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
                  return null;
            }
      }
	
      /**
      * 存放路径
      * name文件的拓展名
      * is文件路径
      * @return 
      * @throws IOException 
      */
      static private String fileOutputPath(String name,String is) throws IOException{
            //获取UUID
            String uuid = UUID.randomUUID().toString();
            uuid = uuid.replace("-", "");
            //设置存储路径,这里将文件名改为uuid随机名
            String o = "F:/文件查看/"; 
            String os = o+uuid+"."+name;
            String path = uuid+"."+name;
            //创建文件夹
            File file = new File(o);
            file.mkdirs();
            fileSave(is,os);
            return path;
      }
	
      /**
      * 文件转存
      * @param is
      * @throws IOException
      */
      static private void fileSave(String is,String os) throws IOException{
            //读取流对象,和文件相关联
            FileInputStream fis = new FileInputStream(is);
            //写入流对象,明确存储文件地址
            FileOutputStream fos = new FileOutputStream(os);
            //将输入字节流对象和输出字节流对象跟缓冲对象关联
            BufferedInputStream bufis = new BufferedInputStream(fis);
            BufferedOutputStream bufos = new BufferedOutputStream(fos);
            //再次定义缓冲区
            byte[] buf = new byte[1024];
            int len = 0;
            while((len=bufis.read(buf))!=-1){
                  bufos.write(buf,0,len);
            };
            bufis.close();
            bufos.close();
      }
}

拜拜~

posted @ 2020-11-16 18:54  NoahEavlia  阅读(168)  评论(0编辑  收藏  举报