『壹』 如何瀏覽超大的txt(30G),有沒有按行過濾的,從多少行到多少行的看
這么大啊,那你就把它當作是電子書,在下一個閱讀器,這樣可以存書簽,下版次再看權很快就可以定位了,而且你也可以在關鍵的地方加書簽,保證想找時迅速進入。對於電腦方面我不是很多精通,我也不知道能不能通過電腦設置來達到你說的,希望我提供的方法對你有幫助
『貳』 minifilter微過濾驅動怎麼過濾內存映射的文件比如notepad讀txt文件
KeEnterCriticalRegion();
if(( ((PFSRTL_COMMON_FCB_HEADER)FileObject->FsContext)->Resource, FALSE))
{
if(( ((PFSRTL_COMMON_FCB_HEADER)FileObject->FsContext)->PagingIoResource, FALSE))
{
if(FileObject->SectionObjectPointer)
{
IoSetTopLevelIrp( (PIRP)FSRTL_FSP_TOP_LEVEL_IRP );
CcFlushCache( FileObject->SectionObjectPointer, NULL, 0, NULL );
if(FileObject->SectionObjectPointer->ImageSectionObject)
{
MmFlushImageSection(
FileObject->SectionObjectPointer,
MmFlushForWrite//MmFlushForDelete//
) ;
}
if(FileObject->SectionObjectPointer->DataSectionObject)
{
CcPurgeCacheSection( FileObject->SectionObjectPointer,
NULL,
0,
FALSE ); //為TRUE,會強迫所有的FileObject重新初始化Cache
}
if(FileObject->PrivateCacheMap)
{
CcUninitializeCacheMap(FileObject, NULL, NULL);;
}
if(FileObject->SectionObjectPointer->DataSectionObject)
{
//Interval.QuadPart = DELAY_ONE_MILLISECOND * 500;//500ms
//KeDelayExecutionThread(KernelMode, FALSE, &Interval);
MmForceSectionClosed( FileObject->SectionObjectPointer,
TRUE//改為TRUE,徹底刷新緩存!!!
);
}
IoSetTopLevelIrp(NULL);
}
ExReleaseResourceLite( ((PFSRTL_COMMON_FCB_HEADER)FileObject->FsContext)->PagingIoResource );
}
ExReleaseResourceLite( ((PFSRTL_COMMON_FCB_HEADER)FileObject->FsContext)->Resource );
}
KeLeaveCriticalRegion();
但是這樣又容易毀壞數據。拋磚引玉,還請高手出手
『叄』 c++TXT字元過濾
如果是這個規律的話建議使用正則表達式,
其實不用什麼C++都可以的
下載一個notepad++編輯器
找到替換,勾選正則表達式替換,
建議使用正則表達式
『肆』 請教:如何用java在txt中過濾空行
如果在兩次換行符之間的數據是空字元時,就不寫入從當前換行符到下一個換行符之間的數據
『伍』 java讀取txt文件,如何過濾掉注釋以及空格
importjava.io.RandomAccessFile;
/**
*格式
*
*
*<p>
*
*@authorcs121102018年11月16日
*@see
*@since1.0
*/
publicclassFormatText{
publicstaticvoidmain(String[]args){
try{
RandomAccessFileacf=newRandomAccessFile("d://FormatText.java","r");
Stringline;
booleanisComment=true;
while(null!=(line=acf.readLine())){
//去除前後空格
//line.trim();
StringnoneSpaceLine=removeAllSpace(line);
//簡單的註解
if(isSimpleComment(noneSpaceLine)){
continue;
}
//多行註解
if(noneSpaceLine.startsWith("/*")){
isComment=true;
}
if(isComment&&noneSpaceLine.endsWith("*/")){
isComment=false;
continue;
}
if(!isComment){
System.out.println(noneSpaceLine);
}
}
acf.close();
}catch(Exceptione){
e.printStackTrace();
}
}
(Stringline){
if(line.startsWith("//")){
returntrue;
}
returnfalse;
}
/**
*注意:這里移除所有的空格,如果只想移除前後兩端的,請使用:line.trim();
*
*@paramline
*行
*@returnString
*/
(Stringline){
StringBuilderb=newStringBuilder(line.length());
for(charch:line.toCharArray()){
intnum=(int)ch;
if(num!=9&&num!=32){
b.append(ch);
}
}
returnb.toString();
}
}
測試數據為上面的java文件,測試結果如下
publicclassFormatText{
publicstaticvoidmain(String[]args){
try{
RandomAccessFileacf=newRandomAccessFile("d://FormatText.java","r");
Stringline;
while(null!=(line=acf.readLine())){
StringnoneSpaceLine=removeAllSpace(line.trim());
if(isSimpleComment(noneSpaceLine)){
continue;
}
System.out.println(noneSpaceLine);
}
acf.close();
}catch(Exceptione){
e.printStackTrace();
}
}
(Stringline){
if(line.startsWith("//")){
returntrue;
}
returnfalse;
}
(Stringline){
StringBuilderb=newStringBuilder(line.length());
for(charch:line.toCharArray()){
if(ch!=''){
b.append(ch);
}
}
returnb.toString();
}
}
『陸』 用C#實現關鍵詞過濾 思路是調用一個TXT文檔 並根據已有的關鍵詞對TXT文檔內的內容進行過濾
FILESTREAM FS = File.OpenRead(「路徑」);
位元組的[] =新的位元組[1024];
同時在兩個步驟(FS文件閱讀(B,0,b.length個)> 0)
{
TextBox2.Text + = Encoding.Default.GetString(b)條;
}
然後常規賽 BR />正則表達式得到MYREG內容=新的正則表達式(「(*?)</文)
的MatchCollection = myreg.Matches(」文本「);
>串x =「」;
(INT I = 0; <m.Count; + +)
{
X = X +米[I]。Value.tostring( )更換(「」,「」)替換(「」,「」);/ /刪除
}
@用戶名分離(即,由空格分隔的話),你可以
串MSTR =「」;
字元串[] = mstr.Split('');/ /利用空間被分為strlist陣列
(strlist [1]的indexOf(「!」)> = 0)
{ MSTR = mstr.Replace(strlist [1]的ToString(),「」);
}
然後創建一個文件,並寫入數據
字元串路徑=使用Server.Mappath(「路徑」);
FileInfo的FI =新的FileInfo(路徑); BR />(fi.Exists)/ /如果文件不存在
{
fi.Create();/ /創建文件
}的
>寫文件
FILESTREAM FS = File.OpenWrite(「路徑」);/ /打開文件
fs.Seek(0,SeekOrigin.End);/ /指向文件頭
byte []的為b = Encoding.Default.GetBytes(「內容」);/ /輸入的內容轉換為位元組數組
fs.Write(B,0,b.length個);/ /寫的內容
fs.Close();/ /關閉文件
想法
定期使用System.Text.RegularExpressions命名空間;
『柒』 C語言將TXT文件中的注釋過濾掉,求大神幫忙修改~分不是問題
我先mark一下,周末寫。
不過理論上不應該是你說的那樣
遇到/*而沒有後面的*/,則將/*後面的消除---------------這個是不對的
刪除注釋,前提應該是你的cpp可以編譯,不可能出現這種有/*而沒有*/的情況,如果簡單粗暴地將/*之後的全部刪除,那修改後的文件就不知道錯到哪裡去了
/************************************************************************
*本程序需要以dos命令行形式打開,支持txt格式
*file1和file2以絕對路徑表示,用法為del.exeoldfile.txtnewfile.txt,例如:
*D:????>DelComments.exee:BPALTask.txte:NewFile.txt
/************************************************************************/
#include<stdio.h>
#include<stdlib.h>
#include<memory.h>
#defineMAX_BUFF_LEN1024
#defineMAX_FNAME_LEN256
/*************************************************************************/
//刪除文件中的注釋,這個文件本身應該沒有錯誤,尤其是引號要匹配,"/*"和"*/"要匹配
//演算法大體上應該如下:
//步驟1:讀取一行,查找"//",若找到,則刪除這一行中"//"後所有的部分
//步驟2:讀取一行,查找"/*",若找到,記錄pos1,刪除pos1到本行末尾,重新讀取一行,
//查找"*/",若找到,記錄pos2,刪除本行0到pos2之間的部分
//重復步驟1和2
//需要考慮的特殊情況有:
//處於雙引號中,如"/","*","//"不計入考慮范圍
//處於單引號中,如'/','*','//'不計入考慮范圍
//"//"與"/"的嵌套關系
/************************************************************************/
voidDelComments(FILE*pFile,FILE*tempFile)
{
charbuff[MAX_BUFF_LEN]={0};
char*pCur=NULL;//當前字元
char*pNext=NULL;//下一字元
char*sqStart=NULL;//單引號起始位置
char*dqStart=NULL;//雙引號起始位置
char*scStart=NULL;//單行注釋起始位置
char*dcStart=NULL;//多行注釋起始位置
unsignedcharlen=0;
while(NULL!=fgets(buff,MAX_BUFF_LEN,pFile))
{
pCur=buff;
while(' '!=*pCur)
{
switch(*pCur)
{
case'/':
if(sqStart||dqStart||scStart||dcStart)
{//忽略字元、字元串以及注釋中的斜杠
pCur++;
}
else
{
pNext=pCur+sizeof(char);
if('/'==*pNext)
{//單行注釋
dcStart=pCur;
pCur=pNext+sizeof(char);
}
elseif('*'==*pNext)
{//多行注釋
scStart=pCur;
pCur=pNext+sizeof(char);
}
else
{//除號
pCur++;
}
}
break;
case'*':
if(sqStart||dqStart||dcStart||(NULL==scStart))
{//忽略字元、字元串以及注釋中的星號,忽略乘號
pCur++;
}
else
{
pNext=pCur+sizeof(char);
if('/'!=*pNext)
{//多行注釋中間的星號,不處理
pCur++;
}
else
{
memset(scStart,'',pNext+sizeof(char)-scStart);
scStart=NULL;
}
}
break;
case'"':
if(sqStart||scStart||dcStart)
{//忽略字元以及注釋中的雙引號
pCur++;
}
else
{
if(dqStart)
{//雙引號匹配成功
dqStart=NULL;
pCur++;
}
else
{
dqStart=pCur;
pCur++;
}
}
break;
case''':
if(dqStart||scStart||dcStart)
{
pCur++;
}
else
{
if(sqStart)
{
len=pCur-sqStart;
if((2*sizeof(char)==len)&&('\'==*(pCur-1)))
{//忽略字元中的單引號
pCur++;
}
else
{
pCur++;
sqStart=NULL;
}
}
else
{
sqStart=pCur;
pCur++;
}
}
break;
default:
pCur++;
break;
}
}
//讀到換行符後,進行相應操作
if(dcStart)
{
len=((*(pCur-sizeof(char))==' ')?(pCur-sizeof(char)):pCur)-dcStart;
memset(dcStart,'',len);
dcStart=NULL;
}
if(sqStart)
{
sqStart=buff;
}
if(dqStart)
{
dqStart=buff;
}
if(scStart)
{
memset(scStart,'',pCur-scStart);
scStart=buff;
}
fputs(buff,tempFile);
}
}
intmain(intargc,char*argv[])
{
FILE*pFile=NULL;
FILE*newFile=NULL;
if(argc<3)
{
fprintf(stderr,"usage:%s[OLD_FILE_NAME][NEW_FILE_NAME] ",argv[0]);
exit(1);
}
if(NULL==(pFile=fopen(argv[1],"r+")))
{
fprintf(stderr,"openfilefailed ");
exit(2);
}
if(NULL==(newFile=fopen(argv[2],"w+")))
{
fprintf(stderr,"createnewFilefailed ");
exit(3);
}
DelComments(pFile,newFile);
fclose(pFile);
fclose(newFile);
return0;
}
『捌』 關於自動過濾txt文件中的內容
不是很明白問題
是不是就是把重復出現的刪除啊?
文本整理器軟體
『玖』 java讀取txt文件,如何過濾掉注釋
處理的重點就是如何判斷和刪除兩行注釋中間的不是以"#"或者"~"開頭的注釋行,草草寫了段代碼,對於樓主給的那段some.txt能夠正常處理
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
public class DelectComments {
public static void main(String rags[]) {
File f = new File("D:\\Hello.txt");
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(f));
boolean flag1 = false;// #
boolean flag2 = false;// ~
String content = "";
// last output content
ArrayList<String> outputContents = new ArrayList<String>();
// the number of lines that between 2 comments lines start with "#" or "~"
int commentsLineNum = 0;
while ((content = br.readLine()) != null) {
// the line is comments and start with "#"
if (content.startsWith("#")) {
// delete the comments lines between 2 comments lines start with "#"
if (flag1) {
for (int i = 0; i < commentsLineNum; i++) {
outputContents.remove(outputContents.size() - 1);
}
commentsLineNum = 0;
} else {
flag1 = true;
}
// the line is comments and start with "~"
} else if (content.startsWith("~")) {
// delete the comments lines between 2 comments lines start with "~"
if (flag2) {
for (int i = 0; i < commentsLineNum; i++) {
outputContents.remove(outputContents.size() - 1);
}
commentsLineNum = 0;
} else {
flag2 = true;
}
} else {
outputContents.add(content);
commentsLineNum++;
}
}
// output the text
for (String outputContent : outputContents) {
System.out.println(outputContent);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
但是還有個問題就是該程序沒有考慮到如果在正文以後再次出現注釋行的情況,如果用本程序處理的話,就會錯誤的把正文也作為注釋刪除,如果有高人的話還望能夠不吝賜教。
『拾』 怎樣使txt文本合並去重復-過濾
文本合並,做到完美的有點難,多年以前寫過這種程序。
理想的,只能是檢測讀取相同文件回名,程序做出提醒答而已。
重復的,目前只能是人工檢查,達不到要求的,重做而已。
如果是數據(有分隔符)還好辦些,讀入資料庫中,再處理,讓程序自動清除重復數據,再生成文本。