服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - java实现文件保存到本地的方法

java实现文件保存到本地的方法

2020-08-02 11:59园芳宝贝 Java教程

本篇文章主要介绍了java实现文件保存到本地的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

本篇介绍了java实现文件保存本地的方法,具体代码如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
private void savePic(InputStream inputStream, String fileName) {
 
    OutputStream os = null;
    try {
      String path = "D:\\testFile\\";
      // 2、保存到临时文件
      // 1K的数据缓冲
      byte[] bs = new byte[1024];
      // 读取到的数据长度
      int len;
      // 输出的文件流保存到本地文件
 
      File tempFile = new File(path);
      if (!tempFile.exists()) {
        tempFile.mkdirs();
      }
      os = new FileOutputStream(tempFile.getPath() + File.separator + fileName);
      // 开始读取
      while ((len = inputStream.read(bs)) != -1) {
        os.write(bs, 0, len);
      }
 
    } catch (IOException e) {
      e.printStackTrace();
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      // 完毕,关闭所有链接
      try {
        os.close();
        inputStream.close();
      } catch (IOException e) {
        e.printStackTrace();
      }
    }
  }

文件保存方法.

附:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
package com.ebways.web.upload.controller;
 
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
 
import com.ebways.web.base.BaseController;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.ebways.web.upload.url.UploadURL;
import org.springframework.web.multipart.MultipartFile;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
@Controller
@RequestMapping(value = UploadURL.MODE_NAME)
public class UploadController extends BaseController {
 
  @RequestMapping(value = UploadURL.IMAGE_UPLOAD)
  @ResponseBody
  public String uploadFile(MultipartFile file, HttpServletRequest request, HttpServletResponse response) throws IllegalArgumentException, Exception {
    // 参数列表
    Map<String, Object> map = new HashMap<>();
    map.put("file", file);
    savePic(file.getInputStream(), file.getOriginalFilename());
 
    //请求接口
    String apiReturnStr = "";//apiHttpRequest(map, API_HOST_URL + "/image/upload");
 
    return apiReturnStr;
  }
 
  private void savePic(InputStream inputStream, String fileName) {
 
    OutputStream os = null;
    try {
      String path = "D:\\testFile\\";
      // 2、保存到临时文件
      // 1K的数据缓冲
      byte[] bs = new byte[1024];
      // 读取到的数据长度
      int len;
      // 输出的文件流保存到本地文件
 
      File tempFile = new File(path);
      if (!tempFile.exists()) {
        tempFile.mkdirs();
      }
      os = new FileOutputStream(tempFile.getPath() + File.separator + fileName);
      // 开始读取
      while ((len = inputStream.read(bs)) != -1) {
        os.write(bs, 0, len);
      }
 
    } catch (IOException e) {
      e.printStackTrace();
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      // 完毕,关闭所有链接
      try {
        os.close();
        inputStream.close();
      } catch (IOException e) {
        e.printStackTrace();
      }
    }
  }
 
  /**
   * <p class="detail">
   * 功能:公共Action
   * </p>
   *
   * @date 2016年9月8日
   * @author wangsheng
   */
  private String allowSuffix = "jpg,png,gif,jpeg";//允许文件格式
  private long allowSize = 2L;//允许文件大小
  private String fileName;
  private String[] fileNames;
 
  public String getAllowSuffix() {
    return allowSuffix;
  }
 
  public void setAllowSuffix(String allowSuffix) {
    this.allowSuffix = allowSuffix;
  }
 
  public long getAllowSize() {
    return allowSize * 1024 * 1024;
  }
 
  public void setAllowSize(long allowSize) {
    this.allowSize = allowSize;
  }
 
  public String getFileName() {
    return fileName;
  }
 
  public void setFileName(String fileName) {
    this.fileName = fileName;
  }
 
  public String[] getFileNames() {
    return fileNames;
  }
 
  public void setFileNames(String[] fileNames) {
    this.fileNames = fileNames;
  }
 
 
  /**
   * <p class="detail">
   * 功能:重新命名文件
   * </p>
   *
   * @return
   * @author wangsheng
   * @date 2016年9月8日
   */
  private String getFileNameNew() {
    SimpleDateFormat fmt = new SimpleDateFormat("yyyyMMddHHmmssSSS");
    return fmt.format(new Date());
  }
 
  /**
   * <p class="detail">
   * 功能:文件上传
   * </p>
   *
   * @param files
   * @param destDir
   * @throws Exception
   * @author wangsheng
   * @date 2014年9月25日
   */
  public void uploads(MultipartFile[] files, String destDir, HttpServletRequest request) throws Exception {
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path;
    try {
      fileNames = new String[files.length];
      int index = 0;
      for (MultipartFile file : files) {
        String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".") + 1);
        int length = getAllowSuffix().indexOf(suffix);
        if (length == -1) {
          throw new Exception("请上传允许格式的文件");
        }
        if (file.getSize() > getAllowSize()) {
          throw new Exception("您上传的文件大小已经超出范围");
        }
        String realPath = request.getSession().getServletContext().getRealPath("/");
        File destFile = new File(realPath + destDir);
        if (!destFile.exists()) {
          destFile.mkdirs();
        }
        String fileNameNew = getFileNameNew() + "." + suffix;//
        File f = new File(destFile.getAbsoluteFile() + "\\" + fileNameNew);
        file.transferTo(f);
        f.createNewFile();
        fileNames[index++] = basePath + destDir + fileNameNew;
      }
    } catch (Exception e) {
      throw e;
    }
  }
 
  /**
   *功能:文件上传
   *
   * @param file
   * @param destDir
   * @throws Exception
   * @author wangsheng
   * @date 2016年9月8日
   */
  public void upload(MultipartFile file, String destDir, HttpServletRequest request) throws Exception {
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path;
    try {
      String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".") + 1);
      int length = getAllowSuffix().indexOf(suffix);
      if (length == -1) {
        throw new Exception("请上传允许格式的文件");
      }
      if (file.getSize() > getAllowSize()) {
        throw new Exception("您上传的文件大小已经超出范围");
      }
 
      String realPath = request.getSession().getServletContext().getRealPath("/");
      File destFile = new File(realPath + destDir);
      if (!destFile.exists()) {
        destFile.mkdirs();
      }
      String fileNameNew = getFileNameNew() + "." + suffix;
      File f = new File(destFile.getAbsoluteFile() + "/" + fileNameNew);
      file.transferTo(f);
      f.createNewFile();
      fileName = basePath + destDir + fileNameNew;
    } catch (Exception e) {
      throw e;
    }
  }
 
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:http://www.cnblogs.com/gmq-sh/p/5852096.html

延伸 · 阅读

精彩推荐