载自:http://www.iteye.com/topic/146841
接触java时间也不短了,可是对java的基础还是很模糊,真的郁闷,特别是对IO流方面的知识了解特别少.
有时候做一些应用不知道怎么入手,比喻说上传附件时,要求不能放在应用服务器下面(防止应用服务器下文件容量太大),这样就带来了一个问题,要使用这个附件时应用服务器就不能访问到,怎么办呢?想了几天最近只好选择流操作了, 可只又不熟悉,只好找资料
下面讲一个例子:
上传附件是一张相片
xml 代码
<img src="downloadImage.do" >
这个展示一张图片,用一个Action进行用流图片进行显示
下面是downloadImage对应的Action代码
java 代码
// TODO Auto-generated method stub
HttpServletRequest request //根据你的Action得到
HttpServletResponse response //根据你的Action得到
ServletOutputStream out=response.getOutputStream();
//获取文件
File file=new File("C:\\Sunset.jpg");
//这样写大文件瞬间占用内存
byte[] bate=new byte[(int)file.length()];;
FileInputStream fileStream=new FileInputStream(file);
fileStream.read(bate,0,(int)file.length());
out.write(bate);
下面转载一个下载的例子:
java 代码
import java.io.*;
import java.net.*;
import java.util.*;
/**
*
Title: 个人开发的API
*
Description: 将指定的HTTP网络资源在本地以文件形式存放
*
Copyright: Copyright (c) 2004
*
Company: NewSky
* @author MagicLiao
* @version 1.0
*/
public class HttpGet {
public final static boolean DEBUG = true;//调试用
private static int BUFFER_SIZE = 8096;//缓冲区大小
private Vector vDownLoad = new Vector();//URL列表
private Vector vFileList = new Vector();//下载后的保存文件名列表
/**
* 构造方法
*/
public HttpGet() {
}
/**
* 清除下载列表
*/
public void resetList() {
vDownLoad.clear();
vFileList.clear();
}
/**
* 增加下载列表项
*
* @param url String
* @param filename String
*/
public void addItem(String url, String filename) {
vDownLoad.add(url);
vFileList.add(filename);
}
/**
* 根据列表下载资源
*/
public void downLoadByList() {
String url = null;
String filename = null;
//按列表顺序保存资源
for (int i = 0; i < vDownLoad.size(); i++) {
url = (String) vDownLoad.get(i);
filename = (String) vFileList.get(i);
try {
saveToFile(url, filename);
}
catch (IOException err) {
if (DEBUG) {
System.out.println("资源[" + url + "]下载失败!!!");
}
}
}
if (DEBUG) {
System.out.println("下载完成!!!");
}
}
/**
* 将HTTP资源另存为文件
*
* @param destUrl String
* @param fileName String
* @throws Exception
*/
public void saveToFile(String destUrl, String fileName) throws IOException {
FileOutputStream fos = null;
BufferedInputStream bis = null;
HttpURLConnection httpUrl = null;
URL url = null;
byte[] buf = new byte[BUFFER_SIZE];
int size = 0;
//建立链接
url = new URL(destUrl);
httpUrl = (HttpURLConnection) url.openConnection();
//连接指定的资源
httpUrl.connect();
//获取网络输入流
bis = new BufferedInputStream(httpUrl.getInputStream());
//建立文件
fos = new FileOutputStream(fileName);
if (this.DEBUG)
System.out.println("正在获取链接[" + destUrl + "]的内容...\n将其保存为文件[" + fileName + "]");
//保存文件
while ( (size = bis.read(buf)) != -1)
fos.write(buf, 0, size);
fos.close();
bis.close();
httpUrl.disconnect();
}
/**
* 设置代理服务器
*
* @param proxy String
* @param proxyPort String
*/
public void setProxyServer(String proxy, String proxyPort) {
//设置代理服务器
System.getProperties().put("proxySet", "true");
System.getProperties().put("proxyHost", proxy);
System.getProperties().put("proxyPort", proxyPort);
}
/**
* 设置认证用户名与密码
*
* @param uid String
* @param pwd String
*/
public void setAuthenticator(String uid, String pwd) {
Authenticator.setDefault(new MyAuthenticator(uid, pwd));
}
/**
* 主方法(用于测试)
*
* @param argv String[]
*/
public static void main(String argv[]) {
HttpGet oInstance = new HttpGet();
try {
//增加下载列表(此处用户可以写入自己代码来增加下载列表)
oInstance.addItem("http://www.ebook.com/java/网络编程001.zip","./网络编程1.zip");
oInstance.addItem("http://www.ebook.com/java/网络编程002.zip","./网络编程2.zip");
oInstance.addItem("http://www.ebook.com/java/网络编程003.zip","./网络编程3.zip");
oInstance.addItem("http://www.ebook.com/java/网络编程004.zip","./网络编程4.zip");
oInstance.addItem("http://www.ebook.com/java/网络编程005.zip","./网络编程5.zip");
oInstance.addItem("http://www.ebook.com/java/网络编程006.zip","./网络编程6.zip");
oInstance.addItem("http://www.ebook.com/java/网络编程007.zip","./网络编程7.zip");
//开始下载
oInstance.downLoadByList();
}
catch (Exception err) {
System.out.println(err.getMessage());
}
}
}
分享到:
相关推荐
Java流是Java编程语言中处理输入输出操作的重要机制,它为数据传输提供了高效且灵活的方式。在Java中,文件操作是通过流的概念实现的,这允许我们读取、写入...理解并熟练掌握Java流操作文件,是Java开发中的重要技能。
Java流操作之数据流实例代码详解 本文主要介绍了Java流操作之数据流实例代码,通过实例代码,展示了Java流操作的具体实现过程。下面是对标题、描述、标签和部分内容的详细解释。 标题:Java流操作之数据流实例代码...
### Java流(文件读写操作) #### 一、流的分类 Java中处理文件和数据时,使用流的概念来进行操作。根据不同的标准,流可以分为几种类型。 ##### 1. 按数据流动方向 - **输入流**:主要用于从数据源读取数据。输入...
Java文件与流操作是Java编程中的重要组成部分,主要用于数据的读写、传输和处理。在Java中,I/O(输入/输出)系统是通过流(Stream)的概念来设计的,流是数据传输的抽象表示,可以是文件、网络连接、内存缓冲区等。...
Java字符流操作是Java IO API中的重要组成部分,主要用于处理文本数据,支持各种编码格式的文件读写。在Java中,字符流分为输入流(InputStreamReader、BufferedReader)和输出流(OutputStreamWriter、PrintWriter...
Java8并行流中自定义线程池操作示例主要介绍了Java8并行流中自定义线程池操作,结合实例形式分析了并行流的相关概念、定义及自定义线程池的相关操作技巧。 1. 概览 Java8引入了流的概念,流是作为一种对数据执行...
最后,Java流媒体播放程序应具备良好的错误处理机制,如网络中断后的恢复、媒体文件格式不支持时的提示等。同时,考虑到不同的操作系统和硬件环境,程序还需要考虑跨平台的兼容性。 总的来说,Java 实现流媒体播放...
总的来说,Java的IO流体系结构复杂而强大,它提供了多种工具和策略来处理各种数据传输场景,包括文件操作、网络通信、对象序列化等。理解并熟练运用这些流可以帮助我们构建高效、可靠的Java应用程序。
Java IO流操作是Java编程中不可或缺的一部分,它用于在程序和外部资源(如磁盘、网络、内存等)之间传输数据。在这个详细的源代码下载中,我们可以通过四篇相关的CSDN博客文章来深入理解Java IO流的工作原理和实际...
Java 流在处理上分为字符流和字节流。字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符、字符数组或字符串,而字节流处理单元为 1 个字节,操作字节和字节数组。 Java 内用 Unicode 编码存储字符,字符流...
Java 输入与输出流是Java编程语言中至关重要的概念,它涉及到数据在程序、文件、网络之间的传输。在Java中,I/O(Input/Output)处理是通过一系列的类和接口来实现的,这些都位于java.io包中。下面将详细阐述Java...
Java流是Java编程语言中处理数据输入和输出的重要机制,它允许程序在内存与外部设备之间,以及程序的不同部分之间高效地传输数据。Java流分为字节流和字符流两大类,字节流处理单个8位字节的数据,而字符流处理...
Java的IO流是Java编程语言中的重要组成部分,它主要用于数据的输入和输出操作。在Java中,IO流被设计为处理任何类型的数据,包括字符、字节甚至对象。本练习旨在帮助初学者理解和掌握Java IO流的基础知识。 一、IO...
本文将详细讲解如何使用Java操作Excel数据,并重点探讨Java流的读取技术。 首先,Java中处理Excel文件最常用的库是Apache POI。Apache POI是一个开源项目,它提供了对Microsoft Office格式的全面支持,包括Excel(....
这个名为"JAVA 文件常用流操作.zip"的压缩包可能包含了各种关于Java中文件流使用的示例和教程。让我们深入探讨一下Java中的文件流操作。 首先,Java中的文件操作主要通过IO(Input/Output)流来实现。IO流分为两大...
在Java编程语言中,文件流操作是处理输入和输出数据的核心部分,特别是在处理文件时。以下是对标题"java文件流操作.docx"和描述中提到的知识点的详细说明: 1. **字节流(Byte Stream)**: Java中的`InputStream`...
在Java中,所有的I/O操作都基于流的概念,流是数据的序列,可以是字节流或字符流。Java I/O库提供了一系列的类来处理这些流,使得开发人员能够方便地进行数据的读取、写入和传输。 1. **字节流**:字节流是处理原始...
Java 文件操作与IO流是Java编程中的核心概念,主要用于数据的读取、写入和传输。在Java中,文件操作通常涉及到`java.io`包下的类,如`File`、`FileOutputStream`、`OutputStreamWriter`和`BufferedWriter`等。下面将...
根据提供的文件信息,...以上就是从给定文件的标题、描述、标签以及部分内容中总结出来的知识点,涵盖了Java POST请求发送与接收文件流的基础操作以及Spring MVC中处理文件上传的相关内容。希望这些信息对你有所帮助。
在JavaCV或OpenCV中,可以使用掩模或者像素操作来实现这一功能。一旦检测到人脸,就可以在该区域应用某种处理,比如填充颜色、模糊处理或者应用预定义的图案来遮挡脸部特征。 至于"哈哈镜"效果,这是一种常见的图像...