`
me-
  • 浏览: 71612 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java http下载文件。在activemq blobmessage 的blob对象读时用到。

阅读更多

http://stackoverflow.com/questions/401748/corrupt-file-when-using-java-to-download-file

 

 

错误代码
URL targetUrl = new URL(urlForFile);
InputStream content = (InputStream)targetUrl.getContent();
BufferedInputStream buffered = new BufferedInputStream(content);
File savedFile = File.createTempFile("temp",".dat");

FileOutputStream fos = new FileOutputStream(savedFile);
int letter;
while((letter = buffered.read()) != -1)
fos.write(letter);
fos.close();

 

 

三大问题:

  1. You're not just treating the input as bytes,未彻底二进制处理
  2. You're needlessly pulling the entire object into memory at once,性能考虑
  3. You're doing multiple method calls for every single byte read and written -- use the array based read/write!,性能考虑

Here's a redo,经过验证的正确处理图片的代码。:

URL targetUrl = new URL(urlForFile); 
InputStream is = targetUrl.getInputStream(); 
File savedFile = File.createTempFile("temp",".dat"); 
FileOutputStream fos = new FileOutputStream(savedFile); 
 
int count; 
byte[] buff = new byte[16 * 1024]; 
while((count = is.read(buff)) != -1) { 
    fos.write(buff, 0, count); 
} 
fos.close(); 
content.close(); 
分享到:
评论

相关推荐

    在Java与C++间应用Activemq

    标题中的“在Java与C++间应用Activemq”指的是使用Apache ActiveMQ这一开源消息代理在Java和C++编程语言之间构建通信桥梁。ActiveMQ是Java Message Service (JMS) 的实现,允许分布式系统中的组件通过消息传递进行...

    ActiveMQ 配置文件详解

    **ActiveMQ配置文件详解** Apache ActiveMQ 是一个开源的消息中间件,它实现了多种消息协议,如JMS(Java Message Service)和AMQP(Advanced Message Queuing Protocol),并且广泛应用于分布式系统中,提供可靠的...

    java消息中间件教程-activemq

    - 在ActiveMQ官网下载Windows版本的ActiveMQ安装包。 - 下载完成后解压缩文件。 - 使用管理员权限运行`activemq.bat`文件来启动ActiveMQ服务,但需要注意的是,关闭该窗口会导致服务停止。 - 可以通过运行`...

    activeMQ在文件上传的应用

    在与ActiveMQ集成时,Uploadify的服务器端处理脚本需要与ActiveMQ进行交互,通常是发送一个包含文件信息的消息到ActiveMQ队列或主题。 2. **ActiveMQ配置**:在ActiveMQ中,我们需要创建一个特定的队列或主题来接收...

    测试activeMQ的java程序

    在测试ActiveMQ时,通常会编写Java程序来模拟生产者和消费者。生产者负责创建消息并将其发送到ActiveMQ服务器,而消费者则负责监听并处理来自服务器的消息。这通常涉及以下步骤: 1. 添加ActiveMQ依赖:在项目中...

    activeMQ的java简单实例.zip

    在这个"activeMQ的java简单实例.zip"压缩包中,我们可能找到了一个简单的Java项目,用于演示如何在Java应用中集成和使用ActiveMQ。以下是一些关于ActiveMQ和Java集成的关键知识点: 1. **ActiveMQ安装与配置**:...

    java操作activeMQ(java项目代码及jar包可运行,队列和订阅模式)

    ActiveMQ是Apache软件基金会开发的一款开源消息中间件,它遵循JMS(Java消息服务)规范,用于在分布式系统中提供高效、可靠的消息传递。在这个Java项目中,包含了使用Java操作ActiveMQ的代码示例和所需的jar包,可以...

    JMS 使用 ActiveMQ 传送文件

    **标题:“JMS 使用 ActiveMQ 传送文件”** 在IT领域,Java消息服务(Java Message Service,简称JMS)是一种标准API,它允许应用程序创建、发送、接收和读取消息。这种技术常用于异步通信,尤其是在分布式系统中,...

    java中间件之activemq

    Java中间件领域的ActiveMQ是一款由Apache开发的开源消息中间件,它为企业级应用提供高效、可扩展、稳定且安全的消息通信服务。ActiveMQ的核心目标是实现标准的、面向消息的集成,支持多语言环境,确保不同平台之间的...

    activemq-demo

    【标题】"activemq-demo" 是一个基于Spring框架与Apache ActiveMQ集成的示例项目,旨在展示如何在实际应用中构建一个高效、可靠的消息传递系统。ActiveMQ是Apache软件基金会开发的一个开源消息代理,它遵循多种消息...

    apache-activemq-5.17.3

    在深入探讨其具体内容之前,我们首先需要了解ActiveMQ的基本概念以及它与Java开发环境的关系。 ActiveMQ作为一款消息中间件,主要负责在分布式系统中传递消息,实现应用程序间的解耦。它支持多种协议,包括开放的...

    ActiveMQ5.10下载以及交互例子

    在本文中,我们将深入探讨ActiveMQ 5.10版本的下载与交互示例,以及如何通过`Publisher.java`和`Customer.java`这两个文件进行消息的发送和接收。 首先,你需要从官方网站或可靠的源下载ActiveMQ 5.10.1的安装包。...

    apache-activemq-5.9.0 下载

    6. **持久化**:ActiveMQ支持多种持久化机制,包括本地文件系统、JDBC数据库和LevelDB,确保在服务重启或故障后仍能保留消息。 7. **高可用性**:通过集群和复制策略,ActiveMQ可以实现高可用性和负载均衡。多个...

    java+ftpServer+derby+ActiveMQ

    在“ftpSever\derby\ActiveMQ”这个场景中,我们可以想象这样的工作流程:用户通过FTP Server上传文件,FTP Server接收到文件后,可以调用后台的Java服务来处理这些文件。这个Java服务可能连接到Derby数据库,将文件...

    java springboot整合activemq工程

    java springboot整合activemq工程 #activemq配置 #默认情况下activemq提供的是queue模式 true是可以使用topic,false是仅使用queue模式 spring.jms.pub-sub-domain: true # 设置连接的activemq服务器 spring....

    apache-activemq-5.16.5

    描述中提到"启动要求jdk版本8+", 这意味着在运行Apache ActiveMQ 5.16.5之前,你需要确保你的系统上安装了Java Development Kit(JDK)的至少8.0版本。JDK是Java程序开发和运行的基础,ActiveMQ作为Java应用程序,...

    ActiveMQ 5 java 源码

    ActiveMQ是Apache软件基金会开发的一款开源消息中间件,它基于Java平台并支持多种协议,如OpenWire、AMQP、STOMP、XMPP等。ActiveMQ 5是其一个重要的版本,提供了高度可扩展性和可靠性,广泛应用于分布式系统中的...

    ActiveMQ接受和发送工具.rar

    在使用ActiveMQ时,了解以下几个关键知识点是至关重要的: 1. **Java Message Service (JMS)**:JMS是一种API,用于在不同的应用程序之间通过消息传递进行通信。它定义了生产、存储、消费和传输消息的标准接口,...

    activemq + spring

    在IT行业中,Apache ActiveMQ和Spring框架的整合是企业级应用中常见的消息中间件解决方案。ActiveMQ是Apache软件基金会开发的一款开源、高性能、跨平台的消息代理,它支持多种消息协议,如OpenWire、AMQP、STOMP等。...

    最新稳定版ActiveMQ5.15.0

    Apache ActiveMQ是开源社区中最流行的Java消息代理,也是企业级消息中间件(Message Broker)的首选之一。在最新的稳定版5.15.0中,它提供了可靠的消息传递功能,适用于分布式应用程序之间的通信,实现了异步处理、...

Global site tag (gtag.js) - Google Analytics