
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 怎么读取文件中的字符和数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)