导航:首页 > 编程语言 > java打开二进制文件怎么打开文件

java打开二进制文件怎么打开文件

发布时间:2023-03-21 01:45:04

‘壹’ java中读取文件(二进制,字符)内容的几种方

JAVA中读取文件内容的方法有很多,比如按字节读取文件内容,按字符读取文件内容,按行读取文件内容,随机读取文件内容等方法,本文就以上方法的具体实现给出代码,需要的可以直接复制使用

public class ReadFromFile {
/**
* 以字节为单位读取文件,常用于读二进制文件,如图片、声音、影像等文件。
*/
public static void readFileByBytes(String fileName) {
File file = new File(fileName);
InputStream in = null;
try {
System.out.println("以字节为单位读取文件内容,一次读一个字节:");
// 一次读一个字节
in = new FileInputStream(file);
int tempbyte;
while ((tempbyte = in.read()) != -1) {
System.out.write(tempbyte);
}
in.close();
} catch (IOException e) {
e.printStackTrace();
return;
}
try {
System.out.println("以字节为单位读取文件内容,一次读多个字节:");
// 一次读多个字节
byte[] tempbytes = new byte[100];
int byteread = 0;
in = new FileInputStream(fileName);
ReadFromFile.showAvailableBytes(in);
// 读入多个字节到字节数组中,byteread为一次读入的字节数
while ((byteread = in.read(tempbytes)) != -1) {
System.out.write(tempbytes, 0, byteread);
}
} catch (Exception e1) {
e1.printStackTrace();
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e1) {
}
}
}
}

/**
* 以字符为单位读取文件,常用于读文本,数字等类型的文件
*/
public static void readFileByChars(String fileName) {
File file = new File(fileName);
Reader reader = null;
try {
System.out.println("以字符为单位读取文件内容,一次读一个字节:");
// 一次读一个字符
reader = new InputStreamReader(new FileInputStream(file));
int tempchar;
while ((tempchar = reader.read()) != -1) {
// 对于windows下,\r\n这两个字符在一起时,表示一个换行。
// 但如果这两个字符分开显示时,会换两次行。
// 因此,屏蔽掉\r,或者屏蔽\n。否则,将会多出很多空行。
if (((char) tempchar) != '\r') {
System.out.print((char) tempchar);
}
}
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
try {
System.out.println("以字符为单位读取文件内容,一次读多个字节:");
// 一次读多个字符
char[] tempchars = new char[30];
int charread = 0;
reader = new InputStreamReader(new FileInputStream(fileName));
// 读入多个字符到字符数组中,charread为一次读取字符数
while ((charread = reader.read(tempchars)) != -1) {
// 同样屏蔽掉\r不显示
if ((charread == tempchars.length)
&& (tempchars[tempchars.length - 1] != '\r')) {
System.out.print(tempchars);
} else {
for (int i = 0; i < charread; i++) {
if (tempchars[i] == '\r') {
continue;
} else {
System.out.print(tempchars[i]);
}
}
}
}

} catch (Exception e1) {
e1.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e1) {
}
}
}
}

/**
* 以行为单位读取文件,常用于读面向行的格式化文件
*/
public static void readFileByLines(String fileName) {
File file = new File(fileName);
BufferedReader reader = null;
try {
System.out.println("以行为单位读取文件内容,一次读一整行:");
reader = new BufferedReader(new FileReader(file));
String tempString = null;
int line = 1;
// 一次读入一行,直到读入null为文件结束
while ((tempString = reader.readLine()) != null) {
// 显示行号
System.out.println("line " + line + ": " + tempString);
line++;
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e1) {
}
}
}
}

/**
* 随机读取文件内容
*/
public static void readFileByRandomAccess(String fileName) {
RandomAccessFile randomFile = null;
try {
System.out.println("随机读取一段文件内容:");
// 打开一个随机访问文件流,按只读方式
randomFile = new RandomAccessFile(fileName, "r");
// 文件长度,字节数
long fileLength = randomFile.length();
// 读文件的起始位置
int beginIndex = (fileLength > 4) ? 4 : 0;
// 将读文件的开始位置移到beginIndex位置。
randomFile.seek(beginIndex);
byte[] bytes = new byte[10];
int byteread = 0;
// 一次读10个字节,如果文件内容不足10个字节,则读剩下的字节。
// 将一次读取的字节数赋给byteread
while ((byteread = randomFile.read(bytes)) != -1) {
System.out.write(bytes, 0, byteread);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (randomFile != null) {
try {
randomFile.close();
} catch (IOException e1) {
}
}
}
}

/**
* 显示输入流中还剩的字节数
*/
private static void showAvailableBytes(InputStream in) {
try {
System.out.println("当前字节输入流中的字节数为:" + in.available());
} catch (IOException e) {
e.printStackTrace();
}
}

public static void main(String[] args) {
String fileName = "C:/temp/newTemp.txt";
ReadFromFile.readFileByBytes(fileName);
ReadFromFile.readFileByChars(fileName);
ReadFromFile.readFileByLines(fileName);
ReadFromFile.readFileByRandomAccess(fileName);
}
}

‘贰’ 请教,怎么用JAVA来读取二进制文件并输出文件内容

Java读取二进制文件,以字节为单位进行读取,还可读取图片、音乐文件、视频文件等,
在Java中,提供了四种类来对文件进行操作,分别是InputStream OutputStream Reader Writer ,前两种是对字节流的操作,后两种则是对字符流的操作。
示例代码如下:
public static void readFileByBytes(String fileName){
File file = new File(fileName);
InputStream in = null;
try {
System.out.println("一次读一个");
// 一次读一个字节
in = new FileInputStream(file);
int tempbyte;
while ((tempbyte = in.read()) != -1) {
System.out.write(tempbyte);
}
in.close();
} catch (IOException e) {
e.printStackTrace();
return;
}

‘叁’ java读取二进制文件

思路:按照字节读取文件到缓冲,然后对文件内容进行处理。

代码如下:


publicstaticvoidreadFile()throwsIOException{
RandomAccessFilef=newRandomAccessFile("test.txt","r");
byte[]b=newbyte[(int)f.length()];
//将文件按照字节方式读入到字节缓存中
f.read(b);
//将字节转换为utf-8格式的字符串
Stringinput=newString(b,"utf-8");
//可以匹配到所有的数字
Patternpattern=Pattern.compile("\d+(\.\d+)?");
Matchermatch=pattern.matcher(input);
while(match.find()){
//match.group(0)即为你想获取的数据
System.out.println(match.group(0));
}
f.close();
}

‘肆’ java 问题:怎样把一个bin二进制图片文件用java代码打开求解!

Java中可以用java.awt.Toolkit类打开gif,jpg,png三种类型的二进制图片文件,如果是其它类型的图片,需要转成上述格式的图片才行。

我给你一个例子你看看吧。

importjava.awt.Frame;

importjava.awt.Graphics;

importjava.awt.Image;

importjava.awt.Toolkit;

importjava.awt.event.WindowAdapter;

importjava.awt.event.WindowEvent;

{

=1L;

Imageim;

//构造函数

publicLoadFromAppli(){

//根据地址装入图片

im=Toolkit.getDefaultToolkit().getImage("bg.png");//bg.png处写你的图片的绝对或相对厅芹销路径

//关闭窗口

addWindowListener(newWindowAdapter()

{

publicvoidwindowClosing(WindowEvente)

{

System.exit(0);

}

});

扮游}

//在Frame上显示图片

publicvoidpaint(Graphicsg){

g.drawImage(im,0,0,this);

}

首指publicstaticvoidmain(String[]args){

LoadFromApplif=newLoadFromAppli();

f.setSize(200,200);

f.setVisible(true);

}

}

‘伍’ 用C++写的二进制文件,用JAVA怎么读取

用FileInputStream读取文件,然后BufferedInputStream来装流,最后用read方法读出字节数组用<<位移运算组合轻松完成你要的变量读取,short2字节,int4字节,long 8字缺陪节,相信你应该返扮绝知道怎么做了,记得文件中的存储的字节是漏姿高低位反向的

‘陆’ java如何将一个EXCEL文件作为二进制文件存入数据库,再把它读取打开

在数据库设一个BLOB类型的字段,然后把Excel文件保存进去.
其实保存什么文件都可以.不一定要Excel的.
这方法通用,随便在网络输入"java blob"就可以找到很多方法了.

‘柒’ 紧急求助!!!JAVA语言下如何将二进制数字写入文件然后读出来

/** * 二进制读写文件 */ import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; public class MainClass { /** * java.io包中的OutputStream及其子类专门用于写二进制数据。 * FileOutputStream是其子类,可用于将二进制数据写入文件。 * DataOutputStream是OutputStream的另一个子类,它可以 * 连接到一个FileOutputStream上,便于写各种基本数据类型的数据。 */ public void writeMethod1() { String fileName="c:/kuka1.dat"; int value0=255; int value1=0; int value2=-1; try { //将DataOutputStream与FileOutputStream连接可输出不同类型的数据 //FileOutputStream类的构造函数负责打开文件kuka.dat,如果文件不存在, //则创建一个新的文件,如果文件已存在则用新创建的文件代替。然后FileOutputStream //类的对象与一个DataOutputStream对象连接,DataOutputStream类具有写 //各种数据类型的方法。 DataOutputStream out=new DataOutputStream(new FileOutputStream(fileName)); out.writeInt(value0); out.writeInt(value1); out.writeInt(value2); out.close(); } catch (Exception e) { e.printStackTrace(); } } //对于大量数据的写入,使用缓冲流BufferedOutputStream类可以提高效率 public void writeMethod2() { String fileName="c:/kuka2.txt"; try { DataOutputStream out=new DataOutputStream( new BufferedOutputStream( new FileOutputStream(fileName))); out.writeInt(10); System.out.println(out.size()+" bytes have been written."); out.writeDouble(31.2); System.out.println(out.size()+" bytes have been written."); out.writeBytes("JAVA"); System.out.println(out.size()+" bytes have been written."); out.close(); } catch (Exception e) { e.printStackTrace(); } } /** * 对二进制文件比较常见的类有FileInputStream,DataInputStream * BufferedInputStream等。类似于DataOutputStream,DataInputStream * 也提供了很多方法用于读入布尔型、字节、字符、整形、长整形、短整形、 * 单精度、双精度等数据。 */ public void readMethod1() { String fileName="c:/kuka1.dat"; int sum=0; try { DataInputStream in=new DataInputStream( new BufferedInputStream( new FileInputStream(fileName))); sum+=in.readInt(); sum+=in.readInt(); sum+=in.readInt(); System.out.println("The sum is:"+sum); in.close(); } catch (Exception e) { e.printStackTrace(); } } public void readMethod2() { try { FileInputStream stream=new FileInputStream("c:/kuka.dat"); int c; while((c=stream.read())!=-1) { System.out.println(c); } } catch (Exception e) { e.printStackTrace(); } } }
晕噢,格式全乱了~~

‘捌’ java 怎么用网页直接打开数据库中读出的二进制 word excel

用Applet或者禅轮Swing等等都可以:得用OpenOffice和它的SDK,
http://hi..com/lw21/blog/item/0be216ad00f8f2174b36d628.html
这是我写的一个小小的Demo
OpenOffice的UNO的API里贺历信有专门对于文件流的操作,它可以专门解烂轮析word,excel,pdf,ppt,rtf等等的文件流。不管是从数据库读出来的流,还是从http过来的流都可以解析。
你运行一下官方的OOoBeanViewer.java这个Java做的Applet,里面有你需要的那个功能,不管你的文件流是不是完整的流,它都能读取并解析。

‘玖’ Java 读取一个二进制文件

//you read data code
File obfile = new File("袜卖test.dat");//二进告伍逗制文件橘隐名:test.dat
BufferedInputStream instream;
try {
instream = new BufferedInputStream(new FileInputStream(obfile));
try {
instream.read(data, 2, 23);
instream.close();
} catch (IOException ex) {
}
} catch (FileNotFoundException ex) {
}

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

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

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

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

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

共占用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打开二进制文件怎么打开文件相关的资料

热点内容
dn20加密防盗阀 浏览:365
金刚铁拳电影 浏览:223
小说纳米程序员 浏览:309
国外一个换脑子的电影 浏览:507
安卓开屏壁纸怎么设置 浏览:582
加密ceb转pdf 浏览:234
《英语老师》李采谭 浏览:926
邵氏电影全集恐怖片 浏览:740
吕宾的电影作品有哪些 浏览:919
mvc5PDF 浏览:394
端脑漫画哪个app可以免费 浏览:604
java创建索引 浏览:258
奔跑吧兄弟在解压板上做动作 浏览:326
杜鹃演的电影有哪些 浏览:752
关于叶寸心的小说 浏览:146
移动通信指南pdf 浏览:792
php移动应用开发 浏览:632
福州生活用什么app 浏览:917
海绵宝宝电影版有几部 浏览:906
安卓保留的文件夹 浏览:999