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;

    }

  }

 

}

    原文作者:Parzivval
    原文地址: https://blog.csdn.net/lannister_awalys_pay/article/details/86419952
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞