java读取socket字节流文件时如何获得已读取的字节大小?

java中如何读取输入流中一段固定长度的字节保存成一个文件?_百度知道
java中如何读取输入流中一段固定长度的字节保存成一个文件?
计算:1kb = 8b, 1M = 1024kb 1汉字=2字节 1字节(Byte)=8字位=8个二进制数Byte[] by = bew Byte[长度]OutputStream out = new FileOutputStream(new File(&a.txt&));out.write(by, 0, 字节数);
其他类似问题
为您推荐:
提问者采纳
我想你是这个意思,arr是你创建的字节数组,如果有限制就不知道了,有没有限制,int off,off是起始地点这个太简单了。FileInputStream,然后使用流对象调用read(byte[] arr,len是读取的数据长度。读取固定长度不是难题,创建一个字节数组:使用某个输入流读取固定长度的字节,没有限制就太好办了,int len),不过你说的是在太模糊了,首先输入流是哪个流,创建一个流,关键你要知道这个输入流的API方法,例如。然后把arr写入到一个文件中,就实现保存了,然后保存到一个文件中,保存到一个文件中也不是问题
提问者评价
其他1条回答
只从输入流中读取10个字节到array数组里
OutputStream out = new FileOutputStream(new File(&quot.OutputSimport java.d;输出流到d, 0.txt&&#47.public class Testsyn { public static void main(String[] args) throws IOException {
InputStream in = new BufferedInputStream(S1你好.read(array,我按照你的要求写了个简单的代码.File, 0.io, 5).in);&#92.txt
out.write(比如输入流来控制台
byte[] array = new byte[100];import java:&#92.FileOutputS/1.InputStream.IOE/&#47:&#92.io,请参阅import java.io.BufferedInputS)).//
&#47, 10);&#47
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁在C或者C++里经常会通过sizeof来计算一个对象所占空间的大小,但是对于java对象,如何获得其大小呢?
该问题被发起重新开启投票
投票剩余时间:
之前被关闭原因:
该问题被发起删除投票
投票剩余时间:
距离悬赏到期还有:
参与关闭投票者:
关闭原因:
该问题已经被锁定
锁定原因:()
保护原因:避免来自新用户不合宜或无意义的致谢、跟帖答案。
该问题已成功删除,仅对您可见,其他人不能够查看。
java.lang. instrument包中有个接口:public interface Instrumentation 此类提供检测 Java 编程语言代码所需的服务。
此类中有个方法:getObjectSize(Object objectToSize)返回指定对象使用的特定于实现的近似存储量。
要想使用这个方法当然要先获取Instrumentation的实例,有两种方法:1.permain方法。在代理行指定代理jar,在main方法启动前启动一个代理程序。2.agentmain方法。不同于permain,在JVM启动后动态添加代理。
用Unsafe, 主要代码引自:
@Testpublic void testea() throws Exception{
System.out.println(sizeOf1(new Object()));
System.out.println(sizeOf1(new TestTesteTestB()));}
private long sizeOf(Object o) throws Exception {
Unsafe u = getUnsafe();
HashSet&Field& fields = new HashSet&Field&();
Class c = o.getClass();
while (c != Object.class) {
for (Field f : c.getDeclaredFields()) {
if ((f.getModifiers() & Modifier.STATIC) == 0) {
fields.add(f);
c = c.getSuperclass();
long maxSize = 0;
for (Field f : fields) {
long offset = u.objectFieldOffset(f);
System.out.println("sdfsd"+offset);
if (offset & maxSize) {
return ((maxSize / 8) + 1) * 8;}private Unsafe getUnsafe() throws Exception {
Field theUnsafe = Unsafe.class.getDeclaredField("theUnsafe");
theUnsafe.setAccessible(true);
return (Unsafe) theUnsafe.get(null);}
我的运行结果:832
看了一些资料, 这里说一下我的理解: 1). Java对象实例大小都是8的倍数;2). 开头为 4字节java对象头, 4字节为 类对象(Klass) 的引用; 然后是对象 实例成员(field);3). 对象 实例成员的存储, java不一定按照类定义的顺序, 为了优化存储空间, 会做重排;4). 为了对齐, 可能会做padding.
这样, 上面的sizeof中, 先拿到偏移对大的那个field, 再做padding((maxSize / 8) + 1) * 8;); 从而拿到对象的大小.
Object对象为8个字节, 这已经是最小的了(因为其没有额外的field定义).
不是您所需,查看更多相关问题与答案
德问是一个专业的编程问答社区,请
后再提交答案
关注该问题的人
共被浏览 (6954) 次如何用java读取一个文件中的字节?_百度知道
如何用java读取一个文件中的字节?
我有一个file.dat文件 路径自拟 要求读出第10个字节的数字 并且赋值给int c前九个不读具体怎么写代码
提问者采纳
readLine()).append(line)!=null){
sbBufferedReader br=new BufferedRead(new FileReader(file))StringBuffer sb=new StringBuffer();while((line=String line
提问者评价
按照你说的,真的成功了,好开心,谢谢你!
其他类似问题
FileInputStream逐个读,丢弃前9个就好了。如果是要跳过XXXXXX个,那选 DataInputStream
来自团队:
为您推荐:
其他1条回答
用File读取文件,FileInputStream读取文件到缓冲区,然后用下标把缓冲区存的数值取出来,ok
java的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁用java如何读取一个文件的指定字节位置的数据?_百度知道
用java如何读取一个文件的指定字节位置的数据?
可以使用RandomAccessFile类。例如要从100字节开始输出工作目录下的data.txt文件的类容。package konw.test1;import java.io.FileNotFoundEimport java.io.IOEimport java.io.RandomAccessFpublic class Test1{
public static void main(String[] args)
long pos = 100;
String str = &&;
RandomAccessFile randomAccessFile = new RandomAccessFile(&data.txt&, &rw&);
randomAccessFile.seek(pos);//将文件流的位置移动到pos字节处
while( (str = randomAccessFile.readLine()) != null)
System.out.println(str);
randomAccessFile.close();
} catch (FileNotFoundException e)
e.printStackTrace();
} catch (IOException e)
e.printStackTrace();
其他类似问题
为您推荐:
提问者采纳
))).println(f).out.read(buff);
System.read();rr:/ } catch (IOException e) {
&#47.printStackTrace();
dis.skip(32);c;
DataInputStream dis=new DataInputStream(new FileInputStream(new File(&
int f = TODO Auto-generated catch block
e; TODO Auto-generated catch block
e; } catch (FileNotFoundException e) {
&#47.ifo&quot.printStackTrace()byte[] buff=new byte[4];/
ByteArrayInputStream bintput = new ByteArrayInputStream(buff)
提问者评价
谢谢,和上面的相反,这只能读Little字节序的文件
其他2条回答
S);cpublic static void testReadFile(){ RandomAccessFile raf =
&#47.readInt().close();.skipBytes(32).println(num);
raf = new RandomAccessFile(&&#47. } catch (Exception e) {
e, &读取一个数字
int num =跳过字节数
raf:&#47.printStackTrace()
佩服的耳力
java的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁Java读取文件多一个字节_小组_ThinkSAAS
Java读取文件多一个字节
Java读取文件多一个字节
在widows下生成的文本文件,使用java读取时,长度比直接在Java中输入长了1。使用notpad++,格式-以UTF-8无BOM格式编码保存,即可解决
PHP开发框架
服务器环境
ThinkSAAS商业授权:
ThinkSAAS为用户提供有偿个性定制开发服务
ThinkSAAS将为商业授权用户提供二次开发指导和技术支持
手机客户端
ThinkSAAS接收任何功能的Iphone(IOS)和Android手机的客户端定制开发服务
让ThinkSAAS更好,把建议拿来。}

我要回帖

更多关于 java字节读取文件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信