遇到一个问题,字节流操作方面的,在windows环境下一定数据量没有问题,但是发布到Linux服务器上面的时候,出现写文件不完整的问题,socket编程有待加强。
参考文章
http://www.blogjava.net/pengpenglin/archive/2008/08/06/220350.html
该方法中使用一个无限循环,从字节流中读取字节,存放到byte数组中,每次读取1024个字节(一般都是这个设置),由于每次读取的字节数量不一定够1024个(比如最后一次的读取就可能不够),所以我们要记录每次实际读到的字节数,然后将实际读取到的字节按指定的编码方式转换成字符串。
private String inputStreamToString(InputStream is, String encoding) {
try {
byte[] b = new byte[1024];
String res = "";
if (is == null) {
return "";
}
int bytesRead = 0;
while (true) {
bytesRead = is.read(b, 0, 1024); // return final read bytes counts
if (bytesRead == -1) {// end of InputStream
return res;
}
res += new String(b, 0, bytesRead, encoding); // convert to string using bytes
}
} catch (Exception e) {
e.printStackTrace();
System.out.print("Exception: " + e);
return "";
}
}
分享到:
相关推荐
这个类提供了对文件的低级访问,允许开发者按字节流处理文件。`FileStream`是`Stream`类的一个具体实现,`Stream`类是所有输入/输出流的基础抽象类。下面我们将详细探讨如何使用`FileStream`分段读取文本内容。 ...
Qt C++的环境中使用OpenSSL实现AES-ECB/CBC-Pkcs7加/解密,可以一次性加解密一个任意长度的明文字符串或者字节流,但不适合分段读取加解密的(例如,一个4GB的大型文件需要加解密,要分段读取,每次读取10MB,就加...
在循环中,先创建一个缓冲区,根据当前剩余数据量决定缓冲区大小,然后使用`Read`方法从原始数据流中读取数据,再用`Encrypt`方法进行加密,最后将加密后的数据写入结果流。如此反复,直到所有数据都被加密。 解密...
3. FileByteUtil.java:这个文件很可能是包含了一些文件操作和字节流处理的工具类,比如读取和写入文件,计算文件校验和(如MD5或SHA),或者比较和拼接字节数组。 详细知识点: 1. 分段上传机制:理解分段上传的...
在分段和多线程下载中,`FileOutputStream`常用于写入下载的文件数据,而`BufferedInputStream`或`Channels`可以用于读取网络流中的数据,提高性能。 总结,这个项目展示了如何在Java中利用分段和多线程技术来提高...
在这个例子中,`open('image.jpg', 'rb')`将图片文件读取为字节流,然后`io.BytesIO(img_file.read())`将字节流封装到一个内存中的`BytesIO`对象。`Image.open(byte_arr)`则使用PIL库从这个流中解码图片并显示。 在...
- **read() 方法**:`int read(byte[] b)`从输入流中读取一定数量的字节到字节数组中。返回实际读取的字节数,或者如果到达文件末尾,则返回-1。 2. **FileOutputStream**: - **构造函数**:`FileOutputStream...
这段代码展示了如何使用VB6和Windows API处理大文件的基本流程,包括文件的打开、分段读取和写入,以及关闭文件。在实际应用中,可能还需要添加错误处理和优化性能的逻辑。 总之,VB6虽然在处理大文件方面存在局限...
- 将文件读取为字节流,可以使用TFileStream类。 - 创建一个THTTPRIO实例,配置其URL指向C#创建的Webservice。 - 调用Webservice的上传方法,传递字节流作为参数。 - 处理返回的结果,如确认文件是否成功保存。 ...
3. 发送数据:将字节流分段,每次发送一个数据帧,直到完成整个文件的发送。 接收数据则包括: 1. 监听UART:设置中断或者循环检测UART接收缓冲区是否有新数据。 2. 数据解析:接收到数据后,根据UART的数据帧格式...
3. 将字节流分段,每段创建一个DatagramPacket。 4. 使用DatagramSocket.send()方法将每个数据包发送到目标地址和端口。 接收端的步骤类似: 1. 创建DatagramSocket并监听指定端口。 2. 在循环中接收...
- `FileInputStream`:从文件中读取字节流,通过`read()`方法获取单个字节或`read(byte[] b)`一次性读取多个字节。 - `FileOutputStream`:向文件写入字节流,使用`write(int b)`写入单个字节,或`write(byte[] b)...
// 设置响应类型为字节流 response.setHeader("Content-disposition", "attachment;filename=" + localFileName); // 设置附件下载,指定文件名 ``` 二、读取并写出文件流 1. 首先,获取文件的InputStream,例如从...
根据题目中的描述,我们可以了解到本例中所采取的方法是通过设置一个固定的块大小(例如100KB)来分段读取并发送文件内容,以此来控制下载速度。具体步骤如下: 1. **初始化文件路径与信息**: - 使用`Server....
在TCP协议中,服务器端和客户端之间的数据传输是基于字节流的,这意味着数据在传输过程中没有明确的边界。这就是所谓的“TCP不存在数据边界”。在上述的代码示例中,客户端向服务器发送字符串,而服务器可能无法一次...
应用程序接收方最终受到的字节流与发送方发送的字节流是一定相同的。因此,我们在使用 TCP 协议的时候应该制定合理的粘包拆包策略。 粘包问题的产生有多种原因,例如应用程序写入的数据大于套接字缓冲区大小,应用...
1. **随机访问流(RandomAccessFile)**: Java的`java.io.RandomAccessFile`类允许程序员以随机方式读写文件,不同于普通的字节流,它可以在文件的任意位置进行读写,而不是顺序地从头到尾操作。这为文件分割提供了...
实现这个功能的源码通常会涉及对`System.IO`和`System.Text`等命名空间的使用,以便处理字节流和字符串操作。`AspxFileUpLoadModule`类中可能会有一个名为`TransactData`的方法,该方法负责查找边界并处理数据。 总...
例如,可以使用PutChunk方法将长文本逐段写入Long Row字段,或者使用GetChunk方法分段读取并显示在VB应用程序中。 在实际应用中,为了提高性能,还需要考虑缓存策略、错误处理和事务管理。例如,对于大量的大对象...
为了避免这个问题,代码采用了分段读取的方式来输出文件内容,而不是一次性将整个文件加载到内存中,这样可以有效减轻服务器的压力。 需要注意的是,使用PHP实现文件下载时,必须保证服务器配置正确,确保PHP脚本有...