Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 重复线路过滤器不工作_Java_File - Fatal编程技术网

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();
   } 
}