java读取二进制文件转吗_Java 文本文件和二进制文件的读取(转)

本文详细介绍了Java中如何读取和写入文本文件及二进制文件,包括使用FileInputStream、FileOutputStream、BufferedReader、BufferedWriter等流进行操作,以及如何将文件转换为二进制流进行数据传输。
摘要由CSDN通过智能技术生成

大家都知道计算机的存储在物理上是二进制的,所以 文本文件与二进制文件的区别并不是物理上的,而是逻辑上的。这两者只是在编码层次上有差异。 简单来说, 文本文件是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码等等。 二进制文件是基于值编码的

一,文本文件的读取

1,FileInputStream:按字节读取文件

1.1,导入包

import java.io.FileInputStream;

java.io.InputStream;

import java.io.*;

1.2,生成一个InputStream对象

InputStream in = new FileInputStream("myfile//a.txt");//("myfile//a.txt",true),写入的内容追加在原有内容的后面,不覆盖

1.3,一个一个字节地读取文件内容

try {

int size = in.available();

char x[] = new char[200];

for (int i = 0; i < size; i++) {

x[i] = (char)in.read();

System.out.print(x[i]);

}

}

catch (IOException ex1) {

ex1.printStackTrace();

}

1.4,关闭对象

finally{

try {

in.close();

}

catch (IOException ex2) {

ex2.printStackTrace();

}

}

=================================================

2,FileOutputStream:按字节写入文件

2.1,导入包

import java.io.*;

2.2,声明一个OutputStream引用

OutputStream out =null;

2.3,构造一个OutputStream对象,并在其中写入内容

try {

out = new FileOutputStream("b.txt");

String str ="java终于完了";

byte[] b = str.getBytes();

try {

out.write(b, 0, b.length);

}

catch (IOException ex1) {

ex1.printStackTrace();

}

2.4,关闭对象

finally{

try {

out.close();

}

catch (IOException ex2) {

ex2.printStackTrace();

}

}

=================================

3,BufferedReader:按字符读取内容

3.1,导入包

import java.io.*;

3.2,声明一个FileReader和BufferedReader的引用

FileReader fr  = null;

BufferedReader buf =null;

3.3,构造一个FileReader和BUfferedReader的对象

fr = new FileReader("myfile//a.txt");

buf = new BufferedReader(fr);

3.4,按行读取文件内容

try {

String s = buf.readLine();

while(s!=null)

{

System.out.println(s);

s =buf.readLine();

}

}

catch (IOException ex1) {

ex1.printStackTrace();

}

3.5,关闭对象连接

finally{

try {

buf.close();

fr.close();

}

catch (IOException ex2) {

ex2.printStackTrace();

}

}

====================================

4,BufferWriter:按字符写入内容

4.1,导入包

import java.io.*;

4.2,声明一个FileWriter和BufferedWriter的引用

FileWriter fw  = null;

BufferedWriter buf = null;

4.3,构造一个FileWriter和BUfferedWriter的对象,并写入内容

try {

fw = new FileWriter("c.txt");

buf = new BufferedWriter(fw);

buf.write("你好!!");

}

catch (IOException ex) {

ex.printStackTrace();

}

4.4,关闭对象连接

finally{

try {

buf.close();

fw.close();

}

catch (IOException ex1) {

ex1.printStackTrace();

}

}

====================================

二,二进制文件的读写

1,导入包

import java.io.*;

2,生成FileInputStream,DataInputStream,FileOutputStream,DataOutputStream的对象

FileInputStream fin = new FileInputStream("d://x.jpg");

DataInputStream da = new DataInputStream(fin);

FileOutputStream fout = new FileOutputStream("e://b.jpg");

DataOutputStream dout = new DataOutputStream(fout);

3,写入数据

int temp ;

try {

while ( (temp = da.read()) != -1) {

dout.write(temp);

}

}

catch (IOException ex1) {

ex1.printStackTrace();

}

4,关闭连接

finally{

try {

fin.close();

da.close();

fout.close();

dout.close();

}

catch (IOException ex2) {

ex2.printStackTrace();

}

}

5 将文件转成二进制流,然后进行写入数据操作

public class IOTest

{

public static void main(String[] args) throws FileNotFoundException

{

FileOutputStream fout = new FileOutputStream("e:\\2.xls");

DataOutputStream dout = new DataOutputStream(fout);

byte[] buffer = getByteFromFile("c:\\1.xls");

int count, i;

try

{

for (i = 0; i < buffer.length; i++)

{

dout.write(buffer[i]);

}

}

catch (IOException e)

{

e.printStackTrace();

}

finally

{

try

{

fout.close();

dout.close();

}

catch (IOException ex2)C语言中文本文件与二进制文件的区别 一、文本文件与二进制文件的定义 大家都知道计算机的存储在物理上是二进制的,所以文本文件与二进制文件的区别并不是物理上的,而是逻辑上的。这两者只是在编码层次上有差异。 简单来说,文本文件是基于字符编码的文件,常

{

ex2.printStackTrace();

}

}

}

private static byte[] getByteFromFile(String file)

{

File f = new File(file);

if (f == null)

{

return null;

}

try

{

FileInputStream stream = new FileInputStream(f);

ByteArrayOutputStream out = new ByteArrayOutputStream(1024);

byte[] b = new byte[1024];

int n;

while ((n = stream.read(b)) != -1)

out.write(b, 0, n);

stream.close();

out.close();

return out.toByteArray();

}

catch (IOException e)

{

}

return null;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值