天天看点

java传输文件代码示例

文件和和base64互转

将文件转成base64字串,再将base64字串转成字节流保存在文件

以下以本人为例

注意:(后面的代码编码工具包没有改过来,需要按照该提示自行修改)

//Java 9版本之后sun.misc.Base64Encoder和sun.misc.Base64Decoder无法使用。
//原因:
//查看官网发现,JDK中的/lib/tool.jar和/lib/rt.jar已经从Java SE 9中删除(估计是因为java从sun换到oracle导致)。
//处理办法:
//直接用 java.util.Base64.Encoder 和 java.util.Base64.Decoder 替代使用。可以直接使用以下方法:

import java.util.Base64.Encoder
import java.util.Base64.Decoder
 
Encoder encoder = Base64.getEncoder();
String result = encoder.encodeToString(byteArray);
 
Decoder decoder = Base64.getDecoder();
byte[] result = decoder.decode(str);
           

1.随便截一张图,并保存到 E:\aaa,并在建立一个保存文件的文件夹 E:\bbb

java传输文件代码示例

2.先写一个将该图片封装成流并以字符串String输出

/**
 * 方法描述:该方法是将文件封装成流并以字符串String类型输出
 * 注意:
 * 	需要添加该jar包:sun.misc.BASE64Decoder.jar
 * @author fmz
 *
 */
public static String encodeBase64File(String path) throws Exception {
        File  file = new File(path);
        FileInputStream inputFile = new FileInputStream(file);
        byte[] buffer = new byte[(int)file.length()];
        inputFile.read(buffer);
        inputFile.close();
        return new BASE64Encoder().encode(buffer);
    }
           

3.将BASE64解码并传输到另一个文件夹

package readFail;

import java.io.FileOutputStream;

import Decoder.BASE64Decoder;
/**
 * 将BASE64解码并传输到另一个文件夹
 * @author Administrator
 *
 */
public class backBASEFail {

	public static void main(String[] args) {
		try {
			System.out.println("开始");
			String base64Code = beanStreamFail.encodeBase64File("E:/aaa/123.png");
			decoderBase64File(base64Code, "E:/bbb/123.png");
			System.out.println("结束");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	/**
	* 将base64字符解码保存文件
	* @param base64Code:转码过的字符串
	* @param targetPath:需要保存的地址
	* @throws Exception
	*/
	public static void decoderBase64File(String base64Code,String targetPath) throws Exception {
		//前台在用Ajax传base64值的时候会把base64中的+换成空格,所以需要替换回来
		base64Code= base64Code.replaceAll(" ", "+");
	    byte[] buffer = new BASE64Decoder().decodeBuffer(base64Code);
	    FileOutputStream out = new FileOutputStream(targetPath);
	    out.write(buffer);
	    out.close();
	}
}

           

4.结果(123.png通过BASE64的方式传输到另一个文件夹)

java传输文件代码示例