`

File writeTo File

    博客分类:
  • ADF
 
阅读更多

文件流问题: file 写到另一个 file

    /**
     * 把服务器上源文件写到本项目临时文件夹中;
     * 目的为了在jsp页面在线转换PDF时能获取到url
     * this.getServletConfig().getServletContext().getRealPath("/") 获取项目运行路径
     * @param fjpath 附件相对路径
     * */
    private void writeToProject(String fjpath) {
        String name = null;
        String fileFold = null;
        InputStream is = null;
        FileOutputStream fos = null;
        String lswjj = null;
        try {
            String[] names = fjpath.split("//"); //以斜杠分割,因为保存在附件表中的路径为:/JYGL_ZYJSFJ//2016届毕业简介_1449544857570.pdf
            fileFold = names[0]; //文件夹:/JYGL_ZYJSFJ
            name = names[1]; //文件名:2016届毕业简介_1449544857570.pdf
            lswjj = this.getServletConfig().getServletContext().getRealPath("/")+fileFold; //临时文件夹(自定义路径)
            QyDao qydao = new QyDao(); //企业Dao操作类
            String xtglPath = qydao.findFilePath(); //xtgl_xtsz(系统设置表)中保存的文件夹路径
            File file = new File(xtglPath+fjpath);  //源文件 D:\xgxt\files\JYGL_ZYJSFJ\2016届毕业简介_1449544857570.pdf 
            is = new FileInputStream(file);
            File newFold = new File(lswjj); //新的临时文件夹
            boolean fold = newFold.exists();
            if (fold == false) {
                newFold.mkdirs(); //创建文件夹
            }
            File uploadFile = new File(lswjj + File.separator + name);
            //uploadFile:D:\JDevRuntime1213\system12.1.3.0.41.140521.1008\o.j2ee\drs\JywApp\ViewControllerWebApp.war\JYGL_ZYJSFJ\2016届毕业简介_1449544857570.pdf
            System.out.println("uploadFile:"+uploadFile);
            fos = new FileOutputStream(uploadFile);
            byte[] buffer = new byte[1024];
            int length = buffer.length;
            int size = 0;
            while ((size = is.read(buffer, 0, length)) != -1) {
                fos.write(buffer, 0, size);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (is != null) {
                    is.close();
                }
                if (fos != null) {
                    fos.close();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

 

package com.caac;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;

public class Doc {
	/**
	 * 负责将path1路径下的文件同步到path2下
	 * 
	 * @param path1
	 *            OA系统中读取附件的URL
	 * @param path2
	 *            档案系统中存放附件的路径
	 * @throws MalformedURLException
	 * @throws UnsupportedEncodingException
	 */
	public void wirteDoc(String path1, String path2)
			throws MalformedURLException, UnsupportedEncodingException {
		URL file = new URL(path1);
		OutputStream outputStream = null;
		InputStream inputStream = null;
		FileOutputStream out = null;
		File temp = null;
		try {
			inputStream = file.openStream();
			byte[] buffer = new byte[1024];// 设置一个大小为1K的数据缓冲空间
			int len = 0;
			temp = new File(path2.substring(0, path2.lastIndexOf("\\")));
			if (!temp.exists()) {
				temp.mkdirs();
			}
			out = new FileOutputStream(path2);
			while ((len = inputStream.read(buffer)) != -1) {
				out.write(buffer, 0, len);// 将缓冲空间的值写入path2对应的文件夹下
			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				if (outputStream != null) {
					outputStream.close();
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}

	/**
	 * 把服务器上源文件写到本地文件夹中;
	 * 
	 * @param sourcePath
	 *            附件源路径
	 * @param aimFold
	 *            目标路径文件夹
	 * @param aimPath
	 *            目标附件路径
	 * */
	public static void writeToProject(String sourcePath, String aimFold,
			String aimPath) throws MalformedURLException,
			UnsupportedEncodingException {
		InputStream is = null;
		FileOutputStream fos = null;
		System.out.println("fold:"
				+ aimPath.substring(0, aimPath.lastIndexOf("\\")));
		try {
			File file = new File(sourcePath); // 源文件
			is = new FileInputStream(file);
			File newFold = new File(aimFold); // 新的文件夹
			boolean fold = newFold.exists();
			if (fold == false) {
				newFold.mkdirs(); // 创建文件夹
			}
			File uploadFile = new File(aimPath);
			fos = new FileOutputStream(uploadFile);
			byte[] buffer = new byte[1024];
			int length = buffer.length;
			int size = 0;
			while ((size = is.read(buffer, 0, length)) != -1) {
				fos.write(buffer, 0, size);
			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				if (is != null) {
					is.close();
				}
				if (fos != null) {
					fos.close();
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}

	/**
	 * 把服务器上源文件写到本地文件夹中;
	 * 
	 * @param sourcePath
	 *            附件文件夹源路径
	 * @param aimFold
	 *            目标路径文件夹
	 * @throws UnsupportedEncodingException
	 * @throws MalformedURLException
	 * */
	public void readfile(String sourcePath, String aimFold)
			throws MalformedURLException, UnsupportedEncodingException {
		String sourceFile = "";
		String aimPath = "";
		File file = new File(sourcePath);
		if (!file.isDirectory()) {
			
		} else if (file.isDirectory()) {
			String[] filelist = file.list();
			for (int i = 0; i < filelist.length; i++) {
				File readfile = new File(sourcePath + "\\" + filelist[i]);
				sourceFile = sourcePath + "\\" + filelist[i];
				if (!readfile.isDirectory()) { // 非文件夹
					aimPath = aimFold + (i + 1) + "_" + filelist[i];
					System.out.println("aimPath:" + aimPath);
					writeToProject(sourceFile, aimFold, aimPath);

				} else if (readfile.isDirectory()) {
					readfile(sourcePath + "\\" + filelist[i], aimFold);
				}
			}
		}
	}

	public static void main(String[] args) {
		// String str =
		// "d:\\asfroot\\userfile\\dag\\dba\\oatemp\\attach\\oatemp_24_4_2.doc";
		// System.out.println(str.substring(0, str.lastIndexOf("\\")));
		// System.out.println("aaa,bbb,ccc".substring(0,"aaa,bbb,ccc".indexOf(",")));

		// Doc doc = new Doc();
		// try {
		// doc.writeToProject("E:\\test\\勤工助学测试要点.doc", "F:\\aaa\\",
		// "F:\\aaa\\test.doc");
		// } catch (MalformedURLException e) {
		// // TODO Auto-generated catch block
		// e.printStackTrace();
		// } catch (UnsupportedEncodingException e) {
		// // TODO Auto-generated catch block
		// e.printStackTrace();
		// }

		Doc doc = new Doc();
		try {
			doc.readfile("E:\\test", "F:\\aaa\\");
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println("finish.");
	}
}

 

分享到:
评论

相关推荐

    readwrite_to_file_csvread_

    标题中的"readwrite_to_file_csvread_"涉及到的是在IT领域中处理CSV文件的读写操作,特别是与西门子WinCC 2020相关的应用。CSV(Comma Separated Values)是一种常见的数据交换格式,它以纯文本形式存储表格数据,...

    Write To File Speed Test - 副本_labview_

    "Write To File Speed Test - 副本_labview_" 是一个专门针对LabVIEW的文件读写速度测试程序,旨在帮助用户了解和优化他们的文件操作性能。 首先,我们需要理解LabVIEW中的文件I/O操作。LabVIEW提供了丰富的文件...

    解决MYSQL出现Can”t create/write to file ”#sql_5c0_0.MYD”的问题

    MySQL error:Can’t create/write to file ‘#sql_5c0_0.MYD’ MySQL server error: Can’t create/write to file ‘C:/WINDOWS/TEMP/#sql_a80_0.MYD’ (Errcode: 17) ( 1 ) 根据从网上搜索问题提示和自己遇到的情况...

    Cant create/write to file C:\WINDOWS\TEMP\…MYSQL报错解决方法

    错误提示:Error: Can’t create/write to file ‘C:\WINDOWS\TEMP\#sql_738_0.MYD’ (Errcode: 17) Errno.: 1 问题分析: 1、C:\Windows\TEMP 文件夹权限不够,至少也要给出 USERS 组的可读可写权限; 2、C:\...

    Android代码-LogToFile

    LogToFile ↓支持一下 Android a simple and practical to print to local phone logs Log files open source The log file is written to the tools, the priority SD card -&gt; external memory -&gt; internal ...

    易网主机ShopexEcshop报错Can't createwrite to file解决方案

    标题和描述中提到的问题是关于在易网主机上运行Shopex或Ecshop这两个电子商务平台时遇到的一个常见错误,即"Can't create/write to file"。这个错误通常发生在系统尝试写入或创建文件时,由于某些原因无法完成操作。...

    Can't create/write to file 'C:\WINDOWS\TEMP\...MYSQL报错解决方法

    针对标题和描述中所提及的“Can't create/write to file 'C:\WINDOWS\TEMP\...MYSQL报错解决方法”,该问题主要发生在尝试在Windows操作系统的TEMP文件夹中创建或写入文件时失败,通常会导致MySQL数据库软件报错。...

    File opened that is not a database file file is encrypted.docx

    然而,从Android 9.0 (Pie)开始,Google引入了一些更改,其中包括默认启用Write-Ahead Logging(WAL)模式,这可能会导致一些开发者在尝试打开或操作数据库时遇到问题,如标题所示的“File opened that is not a ...

    WriteTo_TextFile.xlsm

    Excel VBA 表格内容保存文件文件,WriteToTextFile函数直接调用,内附代码,可以直接调用。

    解决MYSQL出现Can''t create/write to file ''#sql_5c0_0.MYD''的问题

    在使用MySQL数据库的过程中,有时可能会遇到“Can't create/write to file”这样的错误,这通常意味着数据库尝试写入或创建一个文件时遇到了问题。本篇文章将深入探讨这个问题的原因以及相应的解决方案。 首先,这...

    java file类的方法

    if (file.canWrite()) { System.out.println("文件可写!"); } ``` 3. **delete()** - 删除由该`File`对象表示的文件或目录。 - **返回值**:如果成功删除,则返回`true`;否则返回`false`。 - **示例代码*...

    java中File类的使用方法 File类的

    * `public boolean renameTo(File f)`: 将文件重命名为指定的文件。 * `public File[] listRoots()`: 获取机器的盘符。 * `public String[] list()`: 列出文件夹下的文件和文件夹。 * `public String[] list...

    FileReadWrite with text aread output.zip_In Writing_file readers

    例如,你可以使用`new File("path/to/file.txt")`创建一个`File`对象,然后调用`exists()`检查文件是否存在,`createNewFile()`创建新文件,或`renameTo(newFile)`进行重命名。 2. **读取文件**:读取文件通常涉及`...

    InputStream与OutputStream及File间互转

    File file = new File("path_to_file"); FileInputStream fis = new FileInputStream(file); ``` 2. `OutputStream`与`File`的转换: 对于向文件写入数据,我们可以使用`FileOutputStream`。同样,它也是`...

    vbs file winshell file

    If file.Attributes And Scripting.FileSystemObjectgetAttribute(file.Path, Scripting.FILE_ATTRIBUTE_READONLY) Then ' 文件是只读的 Else ' 文件不是只读的 End If ' 设置文件为只读 file.Attributes = ...

    Android的File案例

    - `renameTo(File dest)`用于重命名或移动文件。 - `append(String text)`在文件末尾追加内容,需要配合`BufferedWriter`等流进行。 7. 链接文件: - `isDirectory()`和`isFile()`检查文件是否为目录或文件。 ...

    VB-FILE-writeread.rar_vb 文本

    本文将深入探讨VB中如何实现文件的读取和写入,并结合提供的"VB FILE writeread.pdf"文件,来讲解相关知识点。 首先,VB提供了两个主要的类,用于处理文件操作:`StreamReader`和`StreamWriter`。它们分别用于读取...

    File文件的操作

    Log.d("FileDelete", "Failed to delete the file."); } ``` 5. **重命名文件**:使用`renameTo()`方法重命名文件。 ```java File newFile = new File(context.getFilesDir(), "new_example.txt"); boolean ...

Global site tag (gtag.js) - Google Analytics