Java读写文件,在文件中搜索内容,并输出含有该内容的所有行方式
1.问题描述
在一个目录及子目录下查找TXT或Java文件,从中搜索所有“对象”字样的行。
在D盘中的所有文件中搜索含有“对象”的行。
2.解题思路
先找出D盘下所有文件
再对每个文件中的每行内容进行,进行查找,若含有“对象”两字,输出该行。
3.程序代码
importjava.io.File; importjava.io.IOException; importjava.util.Scanner; publicclassB{ staticintm=1; staticvoidsearch(Filea,Stringx)throwsIOException{//在文件a中的每行中查找x Scannerscan=newScanner(a,"gbk"); intk=0; while(true){ if(scan.hasNext()==false)break; Strings=scan.nextLine(); k++; if(s.contains(x)){ Stringss=m+".文件:"+a.getPath()+"第"+k+"行\n内容:"+s; System.out.println(ss); m++; } } Scannerscan1=newScanner(a,"utf-8"); intk1=0; while(true){ if(scan1.hasNext()==false)break; Strings1=scan1.nextLine(); k1++; if(s1.contains(x)){ Stringss1=m+".文件:"+a.getPath()+"第"+k1+"行\n内容:"+s1; System.out.println(ss1); m++; } } } staticvoidf(Filea,Strings)throwsIOException{//在a下所有文件中查找含有s的行 File[]ff=a.listFiles(); if(ff==null)return; for(Fileit:ff){ if(it.isFile()){//若a是文件,直接查找 search(it,s); } if(it.isDirectory()){//若a是目录,则对其目录下的目录或文件继续查找 f(it,s); } } } publicstaticvoidmain(String[]args)throwsIOException{ f(newFile("d:\\"),"对象"); } }
4.运行结果图
如图所示,在d盘下所有文件中共有198行含有“对象”两字。
补充知识:java编写一个程序分别用字节流和字符流拷贝一个文本文件
我就废话不多说了,大家还是直接看代码吧~
packagecn; importjava.io.*; publicclassTest01{ publicstaticvoidmain(String[]args)throwsException{ //字节流拷贝 //创建一个字节输入流,用于读取E盘下的sss.txt文件 FileInputStreamfis=newFileInputStream("E:/sss.txt"); //创建一个文件字节输出流,用于将读取到的数据写入当前sss.bak文件中 FileOutputStreamfos=newFileOutputStream("E:/sss.bak"); byte[]buff=newbyte[1024]; //定义一个字符数组作为缓冲区 intch; while((ch=fis.read())!=-1){ //判断是否读到文件末尾 System.out.write(ch); fos.write(buff,0,ch); //从第一个一个字节开始,向文件写入ch个字符 } fis.close(); fos.close(); //字符流拷贝 //创建一个BufferedReader缓冲对象 BufferedReaderbr=newBufferedReader(newFileReader("E:/aaa.txt")); //创建一个BufferedWriter缓冲对象 BufferedWriterbw=newBufferedWriter(newFileWriter("E:/aaa.bak")); Stringstr; while((str=br.readLine())!=null){ //每次读取一行文本,判断是否到文件末尾 bw.write(str); bw.newLine(); //写入一个换行符,该方法会根据不同的操作系统生成相应的换行符 } br.close(); bw.close(); } }
以上这篇Java读写文件,在文件中搜索内容,并输出含有该内容的所有行方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。