溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java讀寫文件,在文件中搜索內(nèi)容,并輸出含有該內(nèi)容的所有行方式

發(fā)布時間:2020-08-26 13:19:06 來源:腳本之家 閱讀:186 作者:名字是卡的好 欄目:開發(fā)技術(shù)

1.問題描述

在一個目錄及子目錄下查找 TXT或Java文件,從中搜索所有“對象”字樣的行。

在D盤中的所有文件中搜索含有“對象”的行。

2.解題思路

先找出D盤下所有文件

再對每個文件中的每行內(nèi)容進行,進行查找,若含有“對象”兩字,輸出該行。

3.程序代碼

import java.io.File;
import java.io.IOException;
import java.util.Scanner;

public class B {
  static int m=1;
  static void search(File a,String x) throws IOException{//在文件a中的每行中查找x
    Scanner scan = new Scanner(a,"gbk");
    int k = 0;
    while(true){  
      if(scan.hasNext()==false) break;
      String s = scan.nextLine();
      k++;
      if(s.contains(x)){
        String ss =m +".文件:"+ a.getPath() + " 第" + k + "行 \n 內(nèi)容:" + s;
        System.out.println(ss);
        m++;
      }
    } 
    Scanner scan1 = new Scanner(a,"utf-8");
    int k1 = 0;
    while(true){  
      if(scan1.hasNext()==false) break;
      String s1 = scan1.nextLine();      
      k1++;
      if(s1.contains(x)){
        String ss1 =m +".文件:"+ a.getPath() + " 第" + k1 + "行 \n 內(nèi)容:" + s1;
        System.out.println(ss1);
        m++;
      }
    } 
  }
  static void f(File a,String s)throws IOException{//在a下所有文件中查找含有s的行
    
    File[] ff = a.listFiles();
    if(ff==null) return;
    for(File it : ff){
      if(it.isFile()){//若a是文件,直接查找
        search(it,s);
      }
      if(it.isDirectory()){//若a是目錄,則對其目錄下的目錄或文件繼續(xù)查找
        f(it,s);
      }
    }    
  }

  public static void main(String[] args)throws IOException {
    f(new File("d:\\"),"對象");

  }

}

4.運行結(jié)果圖

Java讀寫文件,在文件中搜索內(nèi)容,并輸出含有該內(nèi)容的所有行方式

如圖所示,在d盤下所有文件中共有198行含有“對象”兩字。

補充知識:java 編寫一個程序分別用字節(jié)流和字符流拷貝一個文本文件

我就廢話不多說了,大家還是直接看代碼吧~

package cn; 
import java.io.*; 
public class Test01 {
	public static void main(String[] args) throws Exception{
		// 字節(jié)流拷貝
		// 創(chuàng)建一個字節(jié)輸入流,用于讀取E盤下的sss.txt文件
		FileInputStream fis=new FileInputStream("E:/sss.txt");
		// 創(chuàng)建一個文件字節(jié)輸出流,用于將讀取到的數(shù)據(jù)寫入當前sss.bak文件中
		FileOutputStream fos=new FileOutputStream("E:/sss.bak");
		byte[] buff=new byte[1024];		// 定義一個字符數(shù)組作為緩沖區(qū)
		int ch;
		while ((ch=fis.read()) !=-1) {	// 判斷是否讀到文件末尾
			System.out.write(ch);
			fos.write(buff, 0,ch);		// 從第一個一個字節(jié)開始,向文件寫入ch個字符
		}
		fis.close();
		fos.close();
		// 字符流拷貝
		// 創(chuàng)建一個BufferedReader緩沖對象
		BufferedReader br=new BufferedReader(new FileReader("E:/aaa.txt"));
		// 創(chuàng)建一個BufferedWriter緩沖對象
		BufferedWriter bw=new BufferedWriter(new FileWriter("E:/aaa.bak"));
		String str;
		while ((str=br.readLine()) != null) {	// 每次讀取一行文本,判斷是否到文件末尾
			bw.write(str);
			bw.newLine();	// 寫入一個換行符,該方法會根據(jù)不同的操作系統(tǒng)生成相應的換行符
		}
		br.close();
		bw.close();	
	}
}

以上這篇Java讀寫文件,在文件中搜索內(nèi)容,并輸出含有該內(nèi)容的所有行方式就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI