「java二进制转换为文件」java文件转换成二进制编码

博主:adminadmin 2023-01-18 17:33:08 340

本篇文章给大家谈谈java二进制转换为文件,以及java文件转换成二进制编码对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java里怎样把文件转换成二进制

转换文件成为二进制数据并保存的Java代码:

取出数据并还原文件到本地的java代码:

[java] view plain copy//读取数据库二进制文件

public void readerJpg() throws SQLException

{

connection=connectionManager.getconn();//自己连接自己的数据库

String sqlString="select images from save_image where id=4";//从数据库中读出要还原文件的二进制码,这里我读的是自己的数据库id为4的文件

File file=new File("E:\\1.jpg");//本地生成的文件

if(!file.exists())

{

try {

file.createNewFile();

} catch (Exception e) {

e.printStackTrace();

}

}

try {

byte[] Buffer = new byte[4096*5];

statement=connection.prepareStatement(sqlString);

resultSet = statement.executeQuery();

if(resultSet.next())

{

FileOutputStream outputStream = new FileOutputStream(file);

InputStream iStream = resultSet.getBinaryStream("images");//去字段用getBinaryStream()

int size=0;

while((size=iStream.read(Buffer))!=-1)

{

System.out.println(size);

outputStream.write(Buffer,0,size);

}

}

} catch (Exception e) {

e.printStackTrace();

}

}

二进制文件与文本文件相互转化 java实现~

public class WriteTextFileExample {

public static void main(String[] args ) {

try {

FileOutputStream out = new BufferedWriter(

new OutputStreamWriter(

new FileOutputStream(fileName2)));

DataInputStream in=new DataInputStream(

new BufferedInputStream(

new FileInputStream(fileName)));

int l=in.readInt(); //你必须要知道你提取的2进制文件里的数据对应的是什么类型的,数据量有多少

/*

System.out.println(dis.available());

System.out.println(dis.readBoolean());

char c=(char)dis.readChar();

System.out.println(c);

System.out.println(dis.readDouble());

System.out.println(dis.readFloat());

System.out.println(dis.readInt());

System.out.println(dis.readLong());

System.out.println(dis.readShort());

System.out.println(dis.readUTF());

*/

//读取的时候一定要一一对应,不然取出来也不能用

out.write(String.valueOf(l));

//请根据你的二进制文件自行设定执行次数

}

catch (FileNotFoundException fnfe) {

fnfe.printStackTrace();

}

catch (IOException ioe) {

ioe.printStackTrace();

}

finally {

try {

if (bw != null)

bw.close();

if (fos != null)

fos.close();

}

catch (IOException ie) {

}

}

}

}

参考:

如何用Java或C语言解析二进制文件为文本文件?

在学习C语言fopen()函数后,知道它的第二个参数是标志字符串。如果字符串中出现'b',则表明是以打开二进制(binary)文件,否则是打开文本文件。

那么什么是文本文件,什么是二进制文件呢?

从文件编码的方式来看,文件可分为ASCII码文件和二进制码文件两种。

ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。例如,数5678的存储形式为:

ASC码: 00110101 00110110 00110111 00111000

↓ ↓↓  ↓

十进制码: 5 678

共占用4个字节。ASCII码文件可在屏幕上按字符显示, 例如源程序文件就是ASCII文件,用DOS命令TYPE可显示文件的内容。 由于是按字符显示,因此能读懂文件内容。

二进制文件是按二进制的编码方式来存放文件的。例如,数5678的存储形式为:00010110 00101110只占二个字节。二进制文件虽然也可在屏幕上显示,但其内容无法读懂。C系统在处理这些文件时,并不区分类型,都看成是字符流,按字节进行处理。输入输出字符流的开始和结束只由程序控制而不受物理符号(如回车符)的控制。因此也把这种文件称作“流式文件”。

文本文件与二进制文件的区别在系统存储上它们实际上并没有什么区别,都是以二进制的方式存储于硬盘上。之所以分二进制文件和文本文件,主要是逻辑上的区分,文本文件更人为可读而已。站在编程的角度看,文本文件是基于字符编码过后的,比如常见的就有ascii编码,gbk编码,unicode编码等,文本工具直接打开人为可读。而二进制文件是基于值的编码,这个值到底是什么,完全可自定义,所以可以说二进制文件是一种特殊编码的文件。如果用java编程,可能就根本没遇到过以二进制打开和文本文件打开这两种方式。java里面有字符流和字节流,字符流是对字节流的封装,有编码解码,而字节流操作的则是byte数组,所以更容易理解。python的文件读写方式则更贴近C。因为python和java他们底层都是C,所以很有必要弄清C的读写文件方式。

在Windows和DOS系统中,狭义的文本文件是指扩展名为txt的文件。实际上,那些没有规定格式的,由可理解的的ASCII以及其他编码文字组成的文件都是文本文件,如C源程序文件,HTML超文本,XML。除此之外的其他文件都是二进制文件,如Word文件DOC,图象格式文件JPG。

实际上,fopen()的 b 标志不但可以打开二进制文件,还可以打开文本文件,同样,不带 b 标志也可以打开文本文件。

既然这样,为什么还要区分两种打开方式呢?

因为这两种方式在读写文件时的操作是不一样的。

二进制方式很简单,读文件时,会原封不动的读出文件的全部内容,写的时候,也是把内存缓冲区的内容原封不动的写到文件中。

而文本方式就不一样了,在写文件时,会将换行符号CRLF(0x0D 0x0A)全部转换成单个的0x0A,并且当遇到结束符CTRLZ(0x1A)时,就认为文件已经结束。相应的,写文件时,会将所有的0x0A换成0x0D0x0A。

所以,若使用文本方式打开二进制文件时,就很容易出现文件读不完整,或内容不对的错误。即使是用文本方式打开文本文件,也要谨慎使用,比如复制文件,就不应该使用文本方式。

要特别注意的是,上面这样的说法仅适用于DOS和Windows系统。在Unix和其他一些系统中,没有文本方式和二进制方式的区分,使不使用'b'标志都是一样的。这是由于不同操作系统对文本文件换行符的定义,和C语言中换行符的定义有所不同而造成的。

如上文已提到,DOS和Windows系统使用CRLF(0x0D 0x0A)即\r\n双字节作为文本文件换行符,而Unix文本文件的换行符只有一个字节LF(0x0A)为。在C语言中,也是以LF即'\n'为换行符。

由于DOS/Windows定义的换行符和C语言的不一致,C语言的标准输入输出函数适行读写文本文件时,就适行了CRLF-LF的转换。而Unix的定义和C语言的是一样的,就不必转换了。

那么,为什么会有定义不一致的情况呢,这纯属历史原因。当初C是在Unix上发展的,对换行的定义自然就一样了。其后C被引入到DOS系统,为了使原有的C程序能不加修改的读写DOS的文本文件,所以就在文件读写上做了修改。随着DOS/Windows成为主流平台,这个当初为了兼容而做的修改给众多的C语言开发者添了这样一个小小的麻烦。

所以,二进制和文本模式的区别就在于对于换行符和一些非可见字符上面的转化,所以安全起见,是使用二进制读取会比较安全一些。

在java里面 把 文件转换成二进制流 然后在.net里面 再把二进制流转化成文件.......

方法1:专门写个函数把数据从数据库中读出,作为文件形(如test.jpg)式保存在硬盘上,然后在html中显示img src="test.jpg"/

----------------------------------------------------------------------

方法2:写一个servlet

public class GetPhotoAction extends Action {

private static final String CONTENT_TYPE = "image/gif; charset=GBK";//输出类型为 图像

public ActionForward execute(ActionMapping actionMapping,

ActionForm actionForm,

HttpServletRequest request,

HttpServletResponse response) {

int empid;

try {

empid = Integer.parseInt(request.getParameter("empid"));//员工id

} catch (NumberFormatException e) {

empid = 0;

}

response.setContentType(CONTENT_TYPE); //设置输出类型

OutputStream out = null;

try {

out = response.getOutputStream();//得到输出流

} catch (IOException ex1) {

ex1.printStackTrace(System.out);

}

try {

byte[] photo = Operator.getDBPhoto(empid);//从数据库中读出文件

if (photo!=null photo.length 0) {

out.write(photo); //输出到网页上

}

} catch (Exception ex) {

ex.printStackTrace(System.out);

}

return null;

}

}

我是在struct中写的,如果你用的是jsp+servlet,把Action改成Servlet即可.

由于CONTENT_TYPE = "image/gif; charset=GBK",所以你直接在浏览器中访问这个servlet的话只能看到一张大的图片,就算写了out.write("aaaaaaaaa"),也不会看到字符输出,所以你只能在jsp中调用这个servlet

img src="getPhotoAction.do?empid=123"alt="照片" width="185" height="218"

二进制字符串怎么解析成文件流 java

先放到一个byte[] 集合中,然后String content = new String(byteArray, "gbk") 直接转就可以了

java二进制转换为文件的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java文件转换成二进制编码、java二进制转换为文件的信息别忘了在本站进行查找喔。