java中txt文件中每行数据的第一个数进行比较,若相同则把该行数据提出来放在同一个txt文件中
789680696,3243,234324,3235345,3453454,25345,345345,475,4654,57546,896890986,7868,7689...
789680696,3243,234324,3235345,3453454,25345,345345,475,4654,57546,
896890986,7868,768978,7854580,3446790,46749,454689,567,7789,78689,
589670787,5678,569054,5489789,6767670,89905,545489,545,5698,69065,
........
txt文件中的数据都是上述格式,每行中有十个数据,以逗号隔开。我想找到每行中第一个数据相同的那些行的数据,并把它们保存在一个txt文件中。求助,谢谢!! 展开
896890986,7868,768978,7854580,3446790,46749,454689,567,7789,78689,
589670787,5678,569054,5489789,6767670,89905,545489,545,5698,69065,
........
txt文件中的数据都是上述格式,每行中有十个数据,以逗号隔开。我想找到每行中第一个数据相同的那些行的数据,并把它们保存在一个txt文件中。求助,谢谢!! 展开
2个回答
2016-06-26
展开全部
这是我前一段时间做的一、多种方式读文件内容。1、按字节读取文件内容2、按字符读取文件内容3、按行读取文件内容4、随机读取文件内容Java代码importjava.io.BufferedReader;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileReader;importjava.io.IOException;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.io.RandomAccessFile;importjava.io.Reader;publicclassReadFromFile{publicstaticvoidreadFileByBytes(StringfileName){Filefile=newFile(fileName);InputStreamin=null;try{System.out.println("以字节为单位读取文件内容,一次读一个字节:");//一次读一个字节in=newFileInputStream(file);inttempbyte;while((tempbyte=in.read())!=-1){System.out.write(tempbyte);}in.close();}catch(IOExceptione){e.printStackTrace();return;}try{System.out.println("以字节为单位读取文件内容,一次读多个字节:");//一次读多个字节byte[]tempbytes=newbyte[100];intbyteread=0;in=newFileInputStream(fileName);ReadFromFile.showAvailableBytes(in);//读入多个字节到字节数组中,byteread为一次读入的字节数while((byteread=in.read(tempbytes))!=-1){System.out.write(tempbytes,0,byteread);}}catch(Exceptione1){e1.printStackTrace();}finally{if(in!=null){try{in.close();}catch(IOExceptione1){}}}}publicstaticvoidreadFileByChars(StringfileName){Filefile=newFile(fileName);Readerreader=null;try{System.out.println("以字符为单位读取文件内容,一次读一个字节:");//一次读一个字符reader=newInputStreamReader(newFileInputStream(file));inttempchar;while((tempchar=reader.read())!=-1){//对于windows下,\r\n这两个字符在一起时,表示一个换行。//但如果这两个字符分开显示时,会换两次行。//因此,屏蔽掉\r,或者屏蔽\n。否则,将会多出很多空行。if(((char)tempchar)!='\r'){System.out.print((char)tempchar);}}reader.close();}catch(Exceptione){e.printStackTrace();}try{System.out.println("以字符为单位读取文件内容,一次读多个字节:");//一次读多个字符char[]tempchars=newchar[30];intcharread=0;reader=newInputStreamReader(newFileInputStream(fileName));//读入多个字符到字符数组中,charread为一次读取字符数while((charread=reader.read(tempchars))!=-1){//同样屏蔽掉\r不显示if((charread==tempchars.length)&&(tempchars[tempchars.length-1]!='\r')){System.out.print(tempchars);}else{for(inti=0;i4)?4:0;//将读文件的开始位置移到beginIndex位置。randomFile.seek(beginIndex);byte[]bytes=newbyte[10];intbyteread=0;//一次读10个字节,如果文件内容不足10个字节,则读剩下的字节。//将一次读取的字节数赋给bytereadwhile((byteread=randomFile.read(bytes))!=-1){System.out.write(bytes,0,byteread);}}catch(IOExceptione){e.printStackTrace();}finally{if(randomFile!=null){try{randomFile.close();}catch(IOExceptione1){}}}}privatestaticvoidshowAvailableBytes(InputStreamin){try{System.out.println("当前字节输入流中的字节数为:"+in.available());}catch(IOExceptione){e.printStackTrace();}}publicstaticvoidmain(String[]args){StringfileName="C:/temp/newTemp.txt";ReadFromFile.readFileByBytes(fileName);ReadFromFile.readFileByChars(fileName);ReadFromFile.readFileByLines(fileName);ReadFromFile.readFileByRandomAccess(fileName);}}importjava.io.BufferedReader;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileReader;importjava.io.IOException;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.io.RandomAccessFile;importjava.io.Reader;publicclassReadFromFile{publicstaticvoidreadFileByBytes(StringfileName){Filefile=newFile(fileName);InputStreamin=null;try{System.out.println("以字节为单位读取文件内容,一次读一个字节:");//一次读一个字节in=newFileInputStream(file);inttempbyte;while((tempbyte=in.read())!=-1){System.out.write(tempbyte);}in.close();}catch(IOExceptione){e.printStackTrace();return;}try{System.out.println("以字节为单位读取文件内容,一次读多个字节:");//一次读多个字节byte[]tempbytes=newbyte[100];intbyteread=0;in=newFileInputStream(fileName);ReadFromFile.showAvailableBytes(in);//读入多个字节到字节数组中,byteread为一次读入的字节数while((byteread=in.read(tempbytes))!=-1){System.out.write(tempbytes,0,byteread);}}catch(Exceptione1){e1.printStackTrace();}finally{if(in!=null){try{in.close();}catch(IOExceptione1){}}}}publicstaticvoidreadFileByChars(StringfileName){Filefile=newFile(fileName);Readerreader=null;try{System.out.println("以字符为单位读取文件内容,一次读一个字节:");//一次读一个字符reader=newInputStreamReader(newFileInputStream(file));inttempchar;while((tempchar=reader.read())!=-1){//对于windows下,\r\n这两个字符在一起时,表示一个换行。//但如果这两个字符分开显示时,会换两次行。//因此,屏蔽掉\r,或者屏蔽\n。否则,将会多出很多空行。if(((char)tempchar)!='\r'){System.out.print((char)tempchar);}}reader.close();}catch(Exceptione){e.printStackTrace();}try{System.out.println("以字符为单位读取文件内容,一次读多个字节:");//一次读多个字符char[]tempchars=newchar[30];intcharread=0;reader=newInputStreamReader(newFileInputStream(fileName));//读入多个字符到字符数组中,charread为一次读取字符数while((charread=reader.read(tempchars))!=-1){//同样屏蔽掉\r不显示if((charread==tempchars.length)&&(tempchars[tempchars.length-1]!='\r')){System.out.print(tempchars);}else{for(inti=0;i4)?4:0;//将读文件的开始位置移到beginIndex位置。randomFile.seek(beginIndex);byte[]bytes=newbyte[10];intbyteread=0;//一次读10个字节,如果文件内容不足10个字节,则读剩下的字节。//将一次读取的字节数赋给bytereadwhile((byteread=randomFile.read(bytes))!=-1){System.out.write(bytes,0,byteread);}}catch(IOExceptione){e.printStackTrace();}finally{if(randomFile!=null){try{randomFile.close();}catch(IOExceptione1){}}}}privatestaticvoidshowAvailableBytes(InputStreamin){try{System.out.println("当前字节输入流中的字节数为:"+in.available());}catch(IOExceptione){e.printStackTrace();}}publicstaticvoidmain(String[]args){StringfileName="C:/temp/newTemp.txt";ReadFromFile.readFileByBytes(fileName);ReadFromFile.readFileByChars(fileName);ReadFromFile.readFileByLines(fileName);ReadFromFile.readFileByRandomAccess(fileName);}}
展开全部
public static void main(String[] args) {
File file = new File("num.txt");// 如果报错,可能是文件不存在
FileInputStream fis = null;
try {
fis = new FileInputStream(file);
BufferedReader br = new BufferedReader(new InputStreamReader(fis));
String str = "";
List<String> list = new ArrayList<>();
while ((str = br.readLine()) != null) {
list.add(str);
}
String s1 = "", s2 = "";
List<String> same = new ArrayList<>();// 保存相同的行
int size = list.size();
while (size > 0) {
s2 = list.get(0).split(",")[0];
for (int i = 1; i < list.size(); i++) {
s1 = list.get(i).split(",")[0];// 第一个数
if (s1.equals(s2)) {
same.add(list.get(i));
}
}
if (!same.isEmpty()) {// 找到相同的
File f = new File(new Date().getTime() + ".txt");// 使用现在的时间戳作为文件名
System.out.println("创建文件...");
f.createNewFile();
same.add(list.get(0));// 把第一行加进去
PrintWriter out = new PrintWriter(new OutputStreamWriter(new FileOutputStream(f)));
for (String ss : same) {
out.println(ss);
out.flush();
list.remove(ss);
}
out.close();
} else {
list.remove(0);
}
size = list.size();
same.clear();
}
br.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
File file = new File("num.txt");// 如果报错,可能是文件不存在
FileInputStream fis = null;
try {
fis = new FileInputStream(file);
BufferedReader br = new BufferedReader(new InputStreamReader(fis));
String str = "";
List<String> list = new ArrayList<>();
while ((str = br.readLine()) != null) {
list.add(str);
}
String s1 = "", s2 = "";
List<String> same = new ArrayList<>();// 保存相同的行
int size = list.size();
while (size > 0) {
s2 = list.get(0).split(",")[0];
for (int i = 1; i < list.size(); i++) {
s1 = list.get(i).split(",")[0];// 第一个数
if (s1.equals(s2)) {
same.add(list.get(i));
}
}
if (!same.isEmpty()) {// 找到相同的
File f = new File(new Date().getTime() + ".txt");// 使用现在的时间戳作为文件名
System.out.println("创建文件...");
f.createNewFile();
same.add(list.get(0));// 把第一行加进去
PrintWriter out = new PrintWriter(new OutputStreamWriter(new FileOutputStream(f)));
for (String ss : same) {
out.println(ss);
out.flush();
list.remove(ss);
}
out.close();
} else {
list.remove(0);
}
size = list.size();
same.clear();
}
br.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
更多追问追答
追问
谢谢高手指点,还想问一下,如果要输出这些txt文件怎么办?
追答
你的意思是读取这些文件的内容打印出来吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询