Java 重复线路过滤器不工作
我有这个代码,我已经看过很多次了。它似乎过滤了很多东西,但有些重复的能通过吗Java 重复线路过滤器不工作,java,file,Java,File,我有这个代码,我已经看过很多次了。它似乎过滤了很多东西,但有些重复的能通过吗 import java.io.*; import java.util.*; class ipstoblockfilter { public static void main(String[] args) throws FileNotFoundException { File file = new File("E:\\alp\\ipstoblock.txt"); try {
import java.io.*;
import java.util.*;
class ipstoblockfilter {
public static void main(String[] args) throws FileNotFoundException {
File file = new File("E:\\alp\\ipstoblock.txt");
try {
Scanner sc = new Scanner(file);
try
{
PrintWriter printWriter = new PrintWriter("E:\\alp\\ipstoblockfiltered.txt");
while (sc.hasNextLine()) {
String nextLine = sc.nextLine();
Scanner nextLineParser = new Scanner(nextLine);
// check if duplicate
File filefiltered = new File("E:\\alp\\ipstoblockfiltered.txt");
try {
Scanner scff = new Scanner(filefiltered);
List<String> arrayList = new ArrayList<String>();
while (scff.hasNextLine()) {
arrayList.add(scff.nextLine());
} //While
if (!arrayList.contains(nextLine)) {
printWriter.println(nextLine);
}
} //duptry
catch (FileNotFoundException e) {
e.printStackTrace();
} //dupcatch
// check if duplicate
} //while
printWriter.close();
}
catch (FileNotFoundException ex)
{
}
sc.close();
}
catch (FileNotFoundException e) {
e.printStackTrace();
}
} //Main
} // Class
[/错误]
这是我试过的他的密码
[守则]
import java.io.*;
导入java.util.*;
类ipstoblock命令{
公共静态void main(字符串[]args)引发FileNotFoundException{
File File=新文件(“E:\\alp\\ipstoblock.txt”);
BufferedReader reader=新的BufferedReader(文件);
Set lineSet=new HashSet();
while(reader.readLine()!=null){
lineSet.add(reader.readLine().trim());
}
reader.close();
Printwriter=新的Printwriter(文件);
迭代器迭代器=lineSet.Iterator();
while(iterator.hasNext()){
writer.write(iterator.next());
}
writer.close();
}//主要
}//类
[/code]根据该代码,如果Arraylist不包含您的行,您将一次解析一行,并使用PrintWriter进行写入。好 但是,您正在尝试同时从/向同一文件读取和打印 相反,将每一行读入字符串的数据结构,删除重复项,然后在对所有适当的数据进行排序和解析后将其写回文件 编辑:
import java.io.*;
导入java.util.*;
公共类易普斯坎纳{
公共信息扫描程序(){
}
私有void start(){
试一试{
File File=新文件(“File_PATH\\ipstoblock.txt”);
BufferedReader reader=新的BufferedReader(新文件读取器(文件));
Set lineSet=new HashSet();
while(reader.readLine()!=null){
lineSet.add(reader.readLine().trim());
}
reader.close();
PrintWriter=新的PrintWriter(文件);
迭代器迭代器=lineSet.Iterator();
while(iterator.hasNext()){
writer.write(iterator.next()+“\r\n”);
}
writer.close();
}捕获(IOE异常){
System.err.println(“无法解析”);
}
}
公共静态void main(字符串[]args){
新IpScanner().start();
}
}
如果没有更多正文文本,我就不允许发布。我现在添加了这样的文本。您是否只是比较行是否相等,并删除行是否相等?因此我在ipstoblock.txt中有一个IP列表,我想在ipstoblock filtered.txt中保存所有唯一的IP,因此我在代码中尝试的是为ipstoblock.txt的每一行检查过滤文件的每一行是否匹配。如果没有匹配项,则添加新的唯一ip。您正在创建但未使用nextLineParser
对象,为什么?您也可以在此处发布ipstoblock.txt吗?至少有一个样本文件。你能举个例子吗?谢谢你的帮助谢谢!它似乎给了我一些错误,我更新了opreader,忘记在BufferedReader构造函数中放置一个FileReader对象。我的代码在语法上可能正确,也可能不正确。如果它解决了您的问题,请单击问题旁边的不透明复选标记将其标记为已解决。一旦我修复了代码,您发布的内容将不起作用。
ipstoblockfilter.java:7: error: incompatible types: File cannot be converted to Reader
BufferedReader reader = new BufferedReader(file);
^
ipstoblockfilter.java:15: error: cannot find symbol
Printwriter writer = new PrintWriter(file);
^
symbol: class Printwriter
location: class ipstoblockcommands
Note: Some messages have been simplified; recompile with -Xdiags:verbose to get full output
2 errors
import java.io.*;
import java.util.*;
class ipstoblockcommands {
public static void main(String[] args) throws FileNotFoundException {
File file = new File("E:\\alp\\ipstoblock.txt");
BufferedReader reader = new BufferedReader(file);
Set<String> lineSet= new HashSet<>();
while (reader.readLine() != null) {
lineSet.add(reader.readLine().trim());
}
reader.close();
Printwriter writer = new PrintWriter(file);
Iterator<String> iterator = lineSet.iterator();
while (iterator.hasNext()) {
writer.write(iterator.next());
}
writer.close();
} //Main
} // Class
import java.io.*;
import java.util.*;
public class IpScanner {
public IpScanner() {
}
private void start() {
try {
File file = new File("FILE_PATH\\ipstoblock.txt");
BufferedReader reader = new BufferedReader(new FileReader(file));
Set<String> lineSet= new HashSet<>();
while (reader.readLine() != null) {
lineSet.add(reader.readLine().trim());
}
reader.close();
PrintWriter writer = new PrintWriter(file);
Iterator<String> iterator = lineSet.iterator();
while (iterator.hasNext()) {
writer.write(iterator.next() + "\r\n");
}
writer.close();
} catch (IOException e) {
System.err.println("Couldn't parse");
}
}
public static void main(String[] args){
new IpScanner().start();
}
}