精华内容
下载资源
问答
  • java读取二进制文件

    2021-02-12 09:03:35
    java读取二进制文件并不难,以前在网上看了好多文章都是云里雾里的,这次来清晰的首先定义文件 File file = new File("F:/MarketInfo");然后定义文件流 FileInputStream in = new FileInputStream(file);接下来...

    java读取二进制文件并不难,以前在网上看了好多文章都是云里雾里的,这次来个清晰的

    首先定义文件       File file = new File("F:/MarketInfo");

    然后定义文件流    FileInputStream in = new FileInputStream(file);

    接下来定义数据流  DataInputStream dis=new DataInputStream(in);

    然后用数据流的read方法就可以读取了,下面直接上代码

    public static void readFile(String fileName){

    File file = new File(fileName);

    if(file.exists()){

    try {

    FileInputStream in = new FileInputStream(file);

    DataInputStream dis=new DataInputStream(in);

    byte[] itemBuf = new byte[20];

    //市场编码

    dis.read(itemBuf, 0, 8);

    String marketID =new String(itemBuf,0,8);

    //市场名称

    dis.read(itemBuf, 0, 20);//read方法读取一定长度之后,被读取的数据就从流中去掉了,所以下次读取仍然从 0开始

    String marketName =new String(itemBuf,0,20);

    //上一交易日日期

    dis.read(itemBuf, 0, 8);

    String lastTradingDay = new String(itemBuf,0,8);

    //当前交易日日期

    dis.read(itemBuf, 0, 8);

    String curTradingDay = new String(itemBuf,0,8);

    //交易状态

    dis.read(itemBuf, 0, 1);

    String marketStatus = new String(itemBuf,0,1);

    //交易时段数

    short tradePeriodNum = dis.readShort();

    System.out.println("市场代码:"+ marketID);

    System.out.println("市场名称:"+ marketName);

    System.out.println("上一交易日日期:"+ lastTradingDay);

    System.out.println("当前交易日日期:"+ curTradingDay);

    System.out.println("当前交易日日期:"+ curTradingDay);

    System.out.println("交易状态:"+ marketStatus);

    System.out.println("交易时段数:"+ tradePeriodNum);

    } catch (IOException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }finally{

    //close

    }

    }

    }

    guozhenqian-1123768

    上图

    8e3c3ee9-236c-3cd1-8ffb-9aaeb6878fbf.jpg

    在UltraEdit中查看是这个样子

    8afeb6d8-4218-348d-a72d-7c5e0f69bb9f.jpg

    展开全文
  • 请注意,它getBytes()使用默认字符集,因此,如果要字符串转换为某些特定的字符编码,则应getBytes(String encoding)改用它,但是很次(使用ASCII时尤其是esp)getBytes()就足够了(并且具有不抛出检查异常的优点)...

    通常的方法是用于String#getBytes()获取基础字节,然后以其他某种形式(十六进制,二进制形式)显示这些字节。

    请注意,它getBytes()使用默认字符集,因此,如果要将字符串转换为某些特定的字符编码,则应getBytes(String encoding)改用它,但是很多次(使用ASCII时尤其是esp)getBytes()就足够了(并且具有不抛出检查异常的优点)。

    对于特定的二进制转换,下面是一个示例:

    String s = "foo";

    byte[] bytes = s.getBytes();

    StringBuilder binary = new StringBuilder();

    for (byte b : bytes)

    {

    int val = b;

    for (int i = 0; i < 8; i++)

    {

    binary.append((val & 128) == 0 ? 0 : 1);

    val <<= 1;

    }

    binary.append(' ');

    }

    System.out.println("'" + s + "' to binary: " + binary);

    运行此示例将产生:

    'foo' to binary: 01100110 01101111 01101111

    展开全文
  • Java文件的方式-二进制文件

    万次阅读 2017-12-08 11:08:45
    前言当大家面临需要持久化的数据的时候,可能会面临很选择,...所以如果几百组数据汇聚到一个cache文件中,那就可以解决这个问题了,但是考虑到整型,如果我们可以直接利用整型进行存储,那是不是可以达到最高的

    前言

    当大家面临需要持久化的数据的时候,可能会面临很多选择,比如数据库,文件等。博主这里有一个需求,有很多组数据,0-4096的整型,很显然如果使用数据库,每一组数据作为一条记录,总是感觉浪费,而且这些数据,单一值的价值并不大,通常需要几百组放到一起才有价值。所以如果将几百组数据汇聚到一个cache文件中,那就可以解决这个问题了,但是考虑到整型,如果我们可以直接利用整型进行存储,那是不是可以达到最高的效率呢,比如二进制文件。所以这篇博文就探讨下Java中写文件的方式。

    FileWriter

    FileWritter, 字符流写入字符到文件。默认情况下,它会使用新的内容取代所有现有的内容,然而,当指定一个true (布尔)值作为FileWritter构造函数的第二个参数,它会保留现有的内容,并追加新内容在文件的末尾。

    1. 替换所有现有的内容与新的内容。

    new FileWriter(file);

    1. 保留现有的内容和附加在该文件的末尾的新内容。

    new FileWriter(file,true);

    示例代码:

        private static void outByFileWriter(String filePath) {
            File target = new File(filePath);
            if (target.exists() && target.isFile()){
                boolean flag = target.delete();
            }
            try {
                if (target.createNewFile()){
                    for (int i = 0; i < 1024; i++) {
                        FileWriter fileWriter = new FileWriter(target.getAbsoluteFile(), true);
                        fileWriter.write(i);
                        fileWriter.close();
                    }
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    结果:

    0AgKd.png

    0Atla.png

    可以看到文件确实是在用二进制的形式在保存,但是利用write(int integer)的方法进行整型的保存会保存一个8位整型,并不能达到我们的需求。

    BufferedWriter

    缓冲字符(BufferedWriter )是一个字符流类来处理字符数据。不同于字节流(数据转换成字节),你可以直接写字符串,数组或字符数据保存到文件。

    示例代码:

        private static void outByBufferWriter(String filePath) {
            File target = new File(filePath);
            if (target.exists() && target.isFile()){
                boolean flag = target.delete();
            }
            try {
                if (target.createNewFile()){
                    BufferedWriter out = new BufferedWriter(new FileWriter(target.getAbsoluteFile(), true));
                    out.write(128);
                    out.write(-128);
                    out.write(129);
                    out.write(-129);
    
                    out.close();
    //                for (int i = 0; i < 1024; i++) {
    //                    BufferedWriter out = new BufferedWriter(new FileWriter(target.getAbsoluteFile(), true));
    //                    out.write(i);
    //                    out.close();
    //                }
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    小思考

    为什么写入文件后,文件的内容并不是我们期待的东西呢?

    public void write(int c) throws IOException 写入单个字符。
    c - 指定要写入字符的ASCII。

    FileOutputStream

    文件输出流是一种用于处理原始二进制数据的字节流类。为了将数据写入到文件中,必须将数据转换为字节,并保存到文件。

    示例代码:

    
        private static void outByFileDataOutputStream(String filePath) {
            File target = new File(filePath);
            if (target.exists() && target.isFile()){
                boolean flag = target.delete();
            }
            try {
                if (target.createNewFile()){
                    for (int i = 0; i < 4096; i++) {
                        DataOutputStream out = new DataOutputStream(new FileOutputStream(filePath, true));
                        byte[] bytes = new byte[2];
                        bytes[0] = (byte) (i / 256);
                        bytes[1] = (byte) (i % 256);
                        out.write(bytes);
    //                    out.writeInt(i);
                        out.close();
                    }
    
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    结果:

    0A1vX.md.png

    0A4UG.png

    最后结果达到了我们预期的效果,既保存了数据,又节省了空间,very good!

    展开全文
  • 因为压缩包内的文件需要用到中文命名,如果用jdk自带的zip Jar包没法实现,如果以中文命名会直接不显示,因此采用了 commons.compress.jar。 public static Boolean generateZip(List&lt;Map&lt;String...

            因为压缩包内的文件需要用到中文命名,如果用jdk自带的zip Jar包没法实现,如果以中文命名会直接不显示,因此采用了

    commons.compress.jar。
    public static Boolean generateZip(List<Map<String,Object>> bytes) throws Exception {
            //ZipOutputStream out = null;
            Boolean flag = true;
            //压缩文件路径
            String strZipName = "C:/QueryResult.zip";
            File desFile = new File(strZipName);
    
            if(!desFile.exists()) {
                desFile.getParentFile().mkdirs();
                desFile.createNewFile();
    
            }
            ZipArchiveOutputStream zous = new ZipArchiveOutputStream(desFile);
            //防止中文乱码
            if(zous instanceof ZipArchiveOutputStream) {
    
                zous.setEncoding("GBK");
    
            }
            try {
    
                zous.setUseZip64(Zip64Mode.AsNeeded);
    
                //out = new ZipOutputStream(new FileOutputStream(strZipName));
                for (int i=0;i<bytes.size();i++) {
                    int xh = i+1;
                    String time = (String) bytes.get(i).get("time");
                    String name = (String) bytes.get(i).get("name");
                    String zjh = (String) bytes.get(i).get("zjh");
                   //前面几个参数只是为了命名文件,这个by才是二进制文件,是byte[]的形式。
                    byte[] by = (byte[]) bytes.get(i).get("buffer");
                    String filename = xh+"-"+time+"-"+name+"-"+zjh+".pdf";
                    ArchiveEntry entry = new ZipArchiveEntry(filename);
                    zous.putArchiveEntry(entry);
                    zous.write(by);
                    zous.closeArchiveEntry();
    //                out.putNextEntry(new ZipEntry(xh+"-"+time+"-"+name+"-"+zjh+".pdf"));
    //                out.write(by);
    //                out.flush();
    //                out.closeEntry();
                }
            } catch (Exception e) {
                flag = false;
                e.printStackTrace();
            } finally {
    //            if (out != null) {
    //                out.close();
    //            }
                zous.close();
                return flag;
            }
        }

     

    展开全文
  • 以下为一个Java类--Temp4Test package com.demo; public class Temp4Test extends Temp3Test { private int i = 1; public float f; public static String thisstr = ""; ...
  • 概述java读写文件的有很种方式,基本都是采用java.io的inputStream和各种基于inputstream的封装实现对文件的读写,最原始的接口提供的便是基于byte的读写,而String可以看做是char[],一个char是8个byte。...
  • Linux下查看二进制文件命令

    千次阅读 2021-05-09 03:13:34
    一、在Linux下查看二进制文件的软件:xxdhexdump二、编辑:1、biew2、hexedit3、vimVim 来编辑二进制文件。Vim 本非为此而设计的,因而有若干局限。但你能读取一个文件,改动一个字符,然后把它存盘。结果是你的文件...
  • 目前有这个需求,需要将java跑好的结果持久化,但是如果一个个输出为文本文件又不太好办,因为里面东西太太杂,所以最好的办法是直接输出为二进制文件,把数据连同存储数据的类一起存进去,就行python中的pickle类...
  • 1详细二进制 (主要是用于基本i/o流) #二进制: 1、计算机内部都是2进制 2、数组和ArrayList的区别:ArrayLlsit里面有算法(通用算法,只有当通用算法不行的时候,可以自己写专门算法),数组没有相应的算法,...
  • java文件编译过后会生成一个class文件,里面是以二进制方式存放的代码,机器可以识别class文件中的内容,然后作出相应的操作。生成文件包括什么?java编译后生成class文件,包括三个部分:一、类信息一部分是描述类...
  • Java 动态生成二进制字节码

    千次阅读 2017-04-05 15:34:21
    Java动态代理过程中,会动态生成二进制字节码(只在内存中),该生成过程究竟是怎样的,我来一探究竟。 class字节码文件是根据JVM虚拟机规范中规定的字节码组织规则生成的。 1、类加载器 a.定义一个 Programmer类: ...
  • 通过UltraEdit查看文件编码格式可得:bgk是没有文件字符集编码格式头的,所以在可以通过下面方式大略判断。 GB2312-80编码的编码范围是高位0xa1-0xfe,低位是 0xa1-0xfe ,其中汉字范围为 0xb0a1 和 0xf7fe,...
  • Qt之文件详解(二)二进制文件读写

    千次阅读 2017-02-08 14:48:36
    同时,Qt 还提供了更高级的操作:用于二进制的流QDataStream和用于文本流的QTextStream。本节,我们讲解有关QDataStream的使用以及一些技巧。下章则是QTextStream的相关内容。 QDataStream提
  • 但是忽然发现这次的图片是二进制的,SQLServer中的数据类型是Image类型。于是上网搜资料,看Demo。结果还是没有我想得到的。 我先说一下我自己的思路,首先必须得获取图片地址才能显示图片,但是怎么转换二进制的呢...
  • 首先在数据库建一张表 数据库我这里用的是MySql,数据...用byte[]存储二进制 控制器 @RequestMapping("/upload") public String upload( @RequestParam("file") MultipartFile file,HttpServletRequest request) t...
  • Hadoop Streaming是Hadoop提供的...Hadoop Streaming自带了一些配置参数可友好地支持字段文本数据的处理,参与Hadoop Streaming介绍和编程,可参考我的这篇文章:“Hadoop Streaming编程实例”。然而,随着Ha
  • 生成的可执行文件会很小,在生成的服务器能执行,但是移植到其它服务器后就报上面的错误。 归根到底是-O0的原因,具体这参数可以自行百度,这当时我遇到这问题也花了不少时间,后来查阅相关资料说和make的...
  • 一个独立的rust二进制程序 原文 https://os.phil-opp.com/freestanding-rust-binary/ 原作者 phil-opp 译者 readlnh 创建一个不依赖于标准库的rust可执行文件是我们创建属于自己的操作系统内核的第一步。这使得...
  • 前端在做管理系统开发时经常遇到的需求:下载文件入Excel,World,zip 处理方式有两种: ...通过以下代码,可以将二进制数据转化为可下载文件,并通过a标签下载文件 let blob = new Blob([res], { type: 'app.
  • 时候一个请求的响应中应该即包含文件,也包含其他信息,例如: 后端向前端传文件的方式有很种: 1、对于js可以创建的文件,如excel pdf等,可以将文件数据通过json传给前端,由前端生成文件 2、后端创建文件 ...
  • ThriftRPC——二进制文件传输

    千次阅读 2019-05-24 16:16:41
    公司最近有新的需求,需要和设备之间进行文件传输,字符型文件传输很好解决,但是二进制类型的文件传输存在比较的坑,现在存在的坑进行归纳整理: 注意:阅读这篇文章的读者需要自行去了解thritrpc的相关...
  • 从POI 生成EXCEL 到二进制下载

    千次阅读 2017-01-06 10:22:39
    POI提供API给Java程序对Microsoft Office格式档案读和写的功能.非常好用. 结构如下: HSSF - 提供读写Microsoft Excel格式档案的功能。 XSSF - 提供读写Microsoft Excel OOXML格式档案的功能。 HWPF - ...
  • 本地编译器javac编译程序程序,并生成包含字节码的(.class)文件Java字节码表示可移植的中间语言,通过运行java解释器来解释字节码。解释器也称为虚拟机(Virtual Machine) Java程序的输入可以是下面的任何种...
  • Java IO流读写文件的几注意点

    千次阅读 2014-07-23 15:13:04
    平时写IO相关代码机会挺少的,但却都知道使用BufferedXXXX来读写效率高,没想到里面还有这么陷阱,这两天突然被其中一个陷阱折腾一下:读一个文件,然后写到另外一个文件,前后两个文件居然不一样? 解决这个问题...
  • java使用I/O流生成Word文件

    千次阅读 2018-11-09 09:31:52
    在Eclipse中新建项目GenerateWord,并在其中创建一个GenerateWord.java文件。在该类中引入iText包来生成Word文件,并在该文件生成文字和表格。核心代码如下所示: public class GenerateWord { // 用iText...
  • java文件是什么?

    2021-03-07 14:15:35
    一、什么是Java文件 Java文件Java程序的二进制表示形式。每一个文件代表一个类或者接口。...你可以其他语言的程序编译为类文件,也可以将Java程序文件编译为其他二进制形式。Java文件一个...
  • 刚入行的菜鸟一枚,最近遇到一个问题就是数据库中存储的照片写到生成的Word文档中。查阅了很资料最终解决了这个问题。 我用的方法是在数据库中获取到存储的图片的二进制将二进制流写到本地的文件夹中。然后从...
  • CEF3 二进制文件及资源文件说明

    千次阅读 2018-09-30 15:25:28
    一、目录总览 在Release目录成功编译完libcef后,会看到Relase目录有以下文件生成(这里... 这个不用说,CEF的核心库文件,js引擎、网页加载渲染逻辑等都在其中,也是size最大的一个文件(Release版将近50M,D...
  • 一个class文件深入理解Java字节码结构

    万次阅读 多人点赞 2018-05-15 10:01:56
    前言 我们都知道,Java程序最终是转换成class文件执行在虚拟机上的,那么class文件是个怎样的结构,虚拟机又是...首先,编写一个简单的Java源码: package com.april.test; public class Demo { private int n...
  • 架构和运转过程的分析特定于Lotus Notes平台,其后的关于二进制文件和文本文件的讨论则具有普遍性。(严格地说,XPages指的是IBM基于Lotus Domino和JSF的快速开发技术,XPage则指单个页面,两者的首两字母都大写。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 199,173
精华内容 79,669
关键字:

java将多个文件生成一个二进制文件

java 订阅