java分别以字节流和字符流的两种方式读取文件内容

java分别以字节流和字符流的两种方式读取文件内容,第1张

import javaioBufferedReader;

import javaioFile;

import javaioFileInputStream;

import javaioIOException;

import javaioInputStreamReader;

import javaioPrintWriter;

public class Test10 {

/

 复制当前的源程序到项目的根目录

 @throws IOException

/

public static void main(String[] args) throws IOException {

/

 1:读取原文件

 2:项目标文件中写

 3:使用缓冲流按行读写

/

FileInputStream fis=new FileInputStream("src"+Fileseparator+"day01"+Fileseparator+"Test1java");

//转化为字符输出流

InputStreamReader isr=new InputStreamReader(fis);

//按行为单位读取字符串

BufferedReader br=new BufferedReader(isr);

//

PrintWriter pw=new PrintWriter("Test1java");

String line=null;

while((line=brreadLine())!=null){

pwprintln(line);

}

pwclose();

brclose();

}

}

这些是流之间的转换,就是把 ByteArrayOutputStream baos输出流

转换成DataOutputStream dos输出流

b 表示存贮的字符数组

(0,len)表示读取整个文件的大小

doswrite(b,0len)表示读取整个文件,写入到数组b中

JDK版本 15

测试结果

resulttxt 文件中的内容如下

李明 40:50:60:70:80

姓名:李明 总成绩:300

刘胜 45:55:65:75:85

姓名:刘胜 总成绩:625

不明白+QQ 379821283

代码如下:

package comrabbittest;

import javaioBufferedReader;

import javaioBufferedWriter;

import javaioFileInputStream;

import javaioFileOutputStream;

import javaioInputStreamReader;

import javaioOutputStreamWriter;

public class TestFile {

public static void main(String[] args) throws Exception{

//获得文件输入流 假设目标文件名为datatxt

FileInputStream fin = new FileInputStream("datatxt");

InputStreamReader inR = new InputStreamReader(fin);

BufferedReader bfR = new BufferedReader(inR);

//获得文件输出流 假设目标文件名为resutltxt 追加方式

FileOutputStream fout = new FileOutputStream("resutltxt",true);

OutputStreamWriter outW = new OutputStreamWriter(fout);

BufferedWriter bfW = new BufferedWriter(outW);

String temp = "";//临时缓存 保存读取到的每一行记录

String[] tempArr = {};//临时缓存 保存用空格拆分该行记录得到的数组

String name="";//临时缓存 保存姓名

String[] scoreTemp = {};//临时缓存 保存分数串拆分后得到的数组

int totalScore = 0;//临时缓存 总成绩

//开始读文件

while((temp=bfRreadLine())!=null){

//正则表达式拆分读取到的每行 拆分成 姓名+分数串

tempArr = tempsplit("[ ]+");

//得到姓名

name = tempArr[0];

//正则表达式拆分分数串得到分数数组

scoreTemp = tempArr[1]split(":");

//循环分数数组 得到总成绩

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

totalScore += IntegerparseInt(scoreTemp[i]);

}

//写入结果文件

bfWwrite(temp+"\r\n");

bfWwrite("姓名:"+name+" 总成绩:"+totalScore+"\r\n");

}

//关闭流

bfRclose();

bfWclose();

}

}

测试正常

package p1;

import javaioFileReader;

import javaioFileWriter;

public class J_ReadTxt

{

private static final String LIUYONG = "柳永宋词txt";

private static final String JINGZHUANG = "景庄婉约txt";

public static void main ( String[] args )

{

char[] cs = new char[1];

int count = 0;

String result = "";

try

{

FileReader fr = new FileReader (LIUYONG);

while (-1 != frread (cs))

{

String temp = StringvalueOf (cs);

result += temp;

int b = tempcodePointAt (0);

if (b > 127)

{

count += 2;

}

else

{

count++;

}

}

frclose ();

Systemoutprintln ("文档的字节数: " + count);

String temp = " " + result + " ";

Systemoutprintln ("字符串“柳永”出现的次数: " + ( tempsplit ("\u67f3\u6c38")length - 1 ));

result = resultreplaceAll ("\u67f3\u6c38", "\u666f\u5e84");

FileWriter fw = new FileWriter (JINGZHUANG);

fwwrite (result);

fwflush ();

fwclose ();

}

catch (Exception e)

{

eprintStackTrace ();

}

}

}

1想自定义从第几个字节开始读

使用javaioRandomAccessFile类,可使用构造方法RandomAccessFile af=new RandomAccessFile("C:\\1txt","r");如果想从第100个字节开始读,可使用其方法:public void seek(long pos),如afseek(100);2读几个字节所有的输入流都有方法:public int read(byte[] b,

int off,

int len)

假如你想一次读20个字节,可使用:byte b[] = new byte[100];inputread(b,0,20);然后使用String str = new String(b,0,20);得到你读取的内容

以上就是关于java分别以字节流和字符流的两种方式读取文件内容全部的内容,包括:java分别以字节流和字符流的两种方式读取文件内容、JAVA读取字节流、java 怎么读取文件中的字符和数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9268367.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-26
下一篇2023-04-26

发表评论

登录后才能评论

评论列表(0条)

    保存