cannot create file 拒绝访问_filename用法无效怎么解决

大家好,我是知秋君,一个会写博客吟诗的知秋码农。今天说一说cannot create file 拒绝访问_filename用法无效怎么解决,希望能够帮助大家进步!!! 最近有个需求是oss文件转换为本地文件压缩打包并返回 然后用createTempFile()创建文件有两个参数需要填写,一个是前缀,一个是后缀,这样默认填写的话会有一个问题,文件名是一个固定的前缀加随机数,组成的文件名称

大家好,我是知秋君,一个会写博客吟诗的知秋码农。今天说一说cannot create file 拒绝访问_filename用法无效怎么解决,希望能够帮助大家进步!!!

最近有个需求是oss文件转换为本地文件压缩打包并返回

然后用createTempFile()创建文件有两个参数需要填写,一个是前缀,一个是后缀,这样默认填写的话会有一个问题,文件名是一个固定的前缀加随机数,组成的文件名称,这样不是我想要的,于是,下面解决办法,并附例子。

**例:File.createTempFile(“weisi”, “.docx”);
创建的文件名是这样的

/var/folders/09/xdtl04rn1bbb_s0gnlslfmkh0000gn/T/weisi.doc

**

weisi.doc这块的名字不能自定义

解决思想(是先获取到要更改文件的地址➡️获取原始文件地址带原始文件名称➡️要更改的文件地址➡️复制➡️删除原来的文件,最总搞定!)

网络url转为文件工具类

 /** * 网络url转为文件 * * @param url 路径 * @param original 文件名称 * @return * @throws Exception */ public static File getFile(String original, String url) throws Exception { 

//对本地文件命名 String fileName = url.substring(url.lastIndexOf(".")); File file = null; URL urlfile; InputStream inStream = null; OutputStream os = null; try {

file = File.createTempFile("weisi", fileName); //文件地址 String path = file.getPath(); //文件名称 String name = file.getName(); //文件存放路径(字符串截取weisi后面的内容) String weisi1 = path.substring(0, path.indexOf("weisi")); //原始文件地址带原始文件名称 File file1 = new File(path); //要更改的文件地址和文件名称 file = new File(weisi1 + original + fileName); //复制 FileUtils.copyFile(file1, file); //删除 file1.delete(); //下载 urlfile = new URL(url); inStream = urlfile.openStream(); os = new FileOutputStream(file); int bytesRead = 0; byte[] buffer = new byte[8192]; while ((bytesRead = inStream.read(buffer, 0, 8192)) != -1) {

os.write(buffer, 0, bytesRead); } } catch (Exception e) {

e.printStackTrace(); } finally {

try {

if (null != os) {

os.close(); } if (null != inStream) {

inStream.close(); } } catch (Exception e) {

e.printStackTrace(); } } return file; }

只听到从知秋君办公室传来知秋君的声音:

摽有梅,其实三兮。有谁来对上联或下联?

核心是解决办法***************************

此代码由一叶知秋网-知秋君整理
//文件地址 String path = file.getPath(); //文件名称 String name = file.getName(); //文件存放路径(字符串截取weisi后面的内容) String weisi1 = path.substring(0, path.indexOf("weisi")); //原始文件地址带原始文件名称 File file1 = new File(path); //要更改的文件地址和文件名称 file = new File(weisi1 + original + fileName); //复制 FileUtils.copyFile(file1, file); //删除 file1.delete();

附上压缩文件的工具类:

public class ZipUtils { 

/** * 网络url转为文件 * * @param url 路径 * @param original 文件名称 * @return * @throws Exception */ public static File getFile(String original, String url) throws Exception {

//对本地文件命名 String fileName = url.substring(url.lastIndexOf(".")); File file = null; URL urlfile; InputStream inStream = null; OutputStream os = null; try {

file = File.createTempFile("weisi", fileName); //文件地址 String path = file.getPath(); //文件名称 String name = file.getName(); //文件存放路径(字符串截取weisi后面的内容) String weisi1 = path.substring(0, path.indexOf("weisi")); //原始文件地址带原始文件名称 File file1 = new File(path); //要更改的文件地址和文件名称 file = new File(weisi1 + original + fileName); //复制 FileUtils.copyFile(file1, file); //删除 file1.delete(); //下载 urlfile = new URL(url); inStream = urlfile.openStream(); os = new FileOutputStream(file); int bytesRead = 0; byte[] buffer = new byte[8192]; while ((bytesRead = inStream.read(buffer, 0, 8192)) != -1) {

os.write(buffer, 0, bytesRead); } } catch (Exception e) {

e.printStackTrace(); } finally {

try {

if (null != os) {

os.close(); } if (null != inStream) {

inStream.close(); } } catch (Exception e) {

e.printStackTrace(); } } return file; } /** * 把文件集合打成zip压缩包 * * @param srcFiles 压缩文件集合 * @param zipFile zip文件名 * @throws RuntimeException 异常 */ public static void toZip(List<File> srcFiles, File zipFile) throws IOException {

if (zipFile == null) {

return; } if (!zipFile.getName().endsWith(".zip")) {

return; } ZipOutputStream zos = null; FileOutputStream out = new FileOutputStream(zipFile); try {

zos = new ZipOutputStream(out); for (File srcFile : srcFiles) {

byte[] buf = new byte[BUFFER_SIZE]; zos.putNextEntry(new ZipEntry(srcFile.getName())); int len; // 读取文件并写入到zip中 FileInputStream in = new FileInputStream(srcFile); while ((len = in.read(buf)) != -1) {

zos.write(buf, 0, len); zos.flush(); } in.close(); } } catch (Exception e) {

e.printStackTrace(); } finally {

if (zos != null) {

zos.close(); } } } public static void downloadZip(OutputStream outputStream, List<File> fileList) {

BufferedInputStream bufferedInputStream = null; ZipOutputStream zipOutputStream = null; try {

zipOutputStream = new ZipOutputStream(outputStream); for (File file : fileList) {

ZipEntry zipEntry = new ZipEntry(file.getName()); zipOutputStream.putNextEntry(zipEntry); byte[] buf = new byte[BUFFER_SIZE]; int len; FileInputStream in = new FileInputStream(file); while ((len = in.read(buf)) != -1) {

zipOutputStream.write(buf, 0, len); zipOutputStream.flush(); } } zipOutputStream.flush(); zipOutputStream.close(); } catch (IOException e) {

e.printStackTrace(); } finally {

// 关闭流 try {

if (bufferedInputStream != null) {

bufferedInputStream.close(); } if (zipOutputStream != null) {

zipOutputStream.close(); } if (outputStream != null) {

outputStream.close(); } } catch (IOException e) {

e.printStackTrace(); } } } }
知秋君
上一篇 2024-07-03 15:31
下一篇 2024-07-03 15:31

相关推荐