首页 > 编程知识 正文

java读写文件代码,JAVA读取文件

时间:2023-05-03 22:15:59 阅读:148898 作者:2871

package com.readfile;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileReader;

import java.io.IOException;

import java.io.InputStream;

import Java.io.input streamreader;

import java.io.RandomAccessFile;

import java.io.Reader;

公共类读来自文件{

//*

* @param args

*/

publicstaticvoidmain (string [ ] args ) {

//todo自动生成方法stub

string filename=' c :/users/administrator/desktop/noname1. txt ';

//readfilebybytes (文件名称);

//readfilebychars(filename );

//readfile bylines (文件名称);

读文件随机存取(filename );

}

//*

*随机读取文件内容

*/

publicstaticvoidreadfilebyrandomaccess (string filename ) {

randomaccessfilerandomfile=null;

try {

System.out.println ('随机读取文件内容:');

//以只读方式打开随机访问文件流

random file=newrandomaccessfile (filename,' r ' );

//文件长度、字节数

long file length=random file.length (;

//读取文件的开头位置

intbeginindex=(filelength4)? 0 : 0;

//将读取文件的开始位置移动到beginIndex的位置。

Randomfile.seek(beginindex );

byte[] bytes=new byte[10];

int byteread=0

//一次读取10个字节,如果文件内容小于10个字节,则读取剩下的字节。

//将每次读取的字节数分配给byteread

while ((byteread=random file.read ) bytes )!=-1({

system.out.write(bytes,0,byteread );

}

}catch(ioexceptione ) {

e .打印任务跟踪(;

} finally {

随机文件!=null ) {

try {

randomFile.close (;

}catch(ioexceptionE1) {

}

}

}

}

//*

*以行为单位读取文件。 常用于阅读面向行的格式化文件

*/

publicstaticvoidreadfilebylines {

filefile=newfile(filename;

buffered reader reader=空;

try {

System.out.println ('逐行读取文件内容,一次一行读取:');

reader=newbufferedreader (new filereader )文件);

String tempString=null;

int line=1;

//一次读取一行,直到null作为文件被读取为止

while ((tempstring=reader.readline ) )!=null ) {

//显示行号

system.out.println (line ' line ' : ' tempstring );

线;

}

reader.close (;

} cat

ch (IOException e) {

e.printStackTrace();

} finally {

if (reader != null) {

try {

reader.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下,rn这两个字符在一起时,表示一个换行。

// 但如果这两个字符分开显示时,会换两次行。

// 因此,屏蔽掉r,或者屏蔽n。否则,将会多出很多空行。

if (((char) tempchar) != 'r') {

System.out.print((char) tempchar);

}

}

reader.close();

} catch (Exception e) {

e.printStackTrace();

}

try {

System.out.println("n以字符为单位读取文件内容,一次读多个字节:");

// 一次读多个字符

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 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.println(tempbyte);

}

} catch (Exception e) {

// TODO: handle exception

e.printStackTrace();

}

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) {

}

}

}

}

/**

* 显示输入流中还剩的字节数

*/

private static void showAvailableBytes(InputStream in) {

try {

System.out.println("当前字节输入流中的字节数为:" + in.available());

} catch (IOException e) {

e.printStackTrace();

}

}

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。