Java 如何在读取输入文件后操作输出文件?

Java 如何在读取输入文件后操作输出文件?,java,file,input,output,Java,File,Input,Output,我正在制作这个程序,它应该从一个输入文件中读取数据,然后创建一个输出文件 输入文件(portlandvip2.txt): 50号法庭 方框10 25号俱乐部 无赖康威10号包厢 洛丽塔·巴雷特3号球场 洛拉斯泰瑞尔5俱乐部 马加里·泰瑞尔8号包厢 罗斯林·弗雷2号盒子 桑萨斯塔克2俱乐部 乔恩斯诺5俱乐部 Edmure Tully 3盒 Joffrey Baratheon 20号法院 斯坦尼斯·巴拉森4俱乐部 詹姆·兰尼斯特2号包厢 瑟西兰尼斯特1号法院 贝里克顿达里翁8号球场 巴伦格雷乔伊16

我正在制作这个程序,它应该从一个输入文件中读取数据,然后创建一个输出文件

输入文件(portlandvip2.txt):

50号法庭

方框10

25号俱乐部

无赖康威10号包厢

洛丽塔·巴雷特3号球场

洛拉斯泰瑞尔5俱乐部

马加里·泰瑞尔8号包厢

罗斯林·弗雷2号盒子

桑萨斯塔克2俱乐部

乔恩斯诺5俱乐部

Edmure Tully 3盒

Joffrey Baratheon 20号法院

斯坦尼斯·巴拉森4俱乐部

詹姆·兰尼斯特2号包厢

瑟西兰尼斯特1号法院

贝里克顿达里翁8号球场

巴伦格雷乔伊16号盒子

奥琳娜·泰瑞尔4号球场

梅斯·泰瑞尔5号盒子

提利昂兰尼斯特2俱乐部

Sandor Clegane 2号球场

格雷戈克莱甘尼6俱乐部

桑威尔塔利3俱乐部

佩蒂尔·贝利什6号球场

这是输出文件的外观示例(portland2out.txt):

法庭50元

盒子$10

俱乐部25美元

流氓康威$100.00

洛蕾塔·巴雷特$150.00

我遇到的问题是,所有正在打印的输出文件都是Petyr Baelish

这是目前为止的计划:

import java.util.Scanner;
import java.io.*;
import java.io.Writer;


public class WebberProject2
{

    public static void main(String[] args) throws IOException
    {
        Scanner inputFile = new Scanner(System.in); 

        File inputScanner = new File("portlandvip2.txt");

        Scanner scanner = new Scanner(new File("portlandvip2.txt"));
        while(scanner.hasNext())
        {
            String firstName = scanner.next();
            String lastName = scanner.next();

            PrintWriter outputFile = new PrintWriter("portland2out.txt");

            outputFile.println(" " + firstName + " " + lastName); 
            scanner.nextLine();

            inputFile.close();
            outputFile.close();
        }
    }
}

在循环中打开和关闭输出文件,每次执行循环时都重写一行。将PrintWriter及其close()方法置于循环之外。此外,还有其他资源也在循环中关闭。尝试以下方法:

// ...


Scanner inputFile = new Scanner(System.in); 
File inputScanner = new File("portlandvip2.txt");
Scanner scanner = new Scanner(new File("portlandvip2.txt"));
PrintWriter outputFile = new PrintWriter("portland2out.txt");

while(scanner.hasNext())
{
    String firstName = scanner.next();
    String lastName = scanner.next();

    outputFile.println(" " + firstName + " " + lastName); 
    scanner.nextLine();

}
outputFile.close();
inputFile.close();
scanner.close();
// ...

在循环中打开和关闭输出文件,每次执行循环时都重写一行。将PrintWriter及其close()方法置于循环之外。此外,还有其他资源也在循环中关闭。尝试以下方法:

// ...


Scanner inputFile = new Scanner(System.in); 
File inputScanner = new File("portlandvip2.txt");
Scanner scanner = new Scanner(new File("portlandvip2.txt"));
PrintWriter outputFile = new PrintWriter("portland2out.txt");

while(scanner.hasNext())
{
    String firstName = scanner.next();
    String lastName = scanner.next();

    outputFile.println(" " + firstName + " " + lastName); 
    scanner.nextLine();

}
outputFile.close();
inputFile.close();
scanner.close();
// ...

在循环中打开和关闭输出文件,每次执行循环时都重写一行。将PrintWriter及其close()方法置于循环之外。此外,还有其他资源也在循环中关闭。尝试以下方法:

// ...


Scanner inputFile = new Scanner(System.in); 
File inputScanner = new File("portlandvip2.txt");
Scanner scanner = new Scanner(new File("portlandvip2.txt"));
PrintWriter outputFile = new PrintWriter("portland2out.txt");

while(scanner.hasNext())
{
    String firstName = scanner.next();
    String lastName = scanner.next();

    outputFile.println(" " + firstName + " " + lastName); 
    scanner.nextLine();

}
outputFile.close();
inputFile.close();
scanner.close();
// ...

在循环中打开和关闭输出文件,每次执行循环时都重写一行。将PrintWriter及其close()方法置于循环之外。此外,还有其他资源也在循环中关闭。尝试以下方法:

// ...


Scanner inputFile = new Scanner(System.in); 
File inputScanner = new File("portlandvip2.txt");
Scanner scanner = new Scanner(new File("portlandvip2.txt"));
PrintWriter outputFile = new PrintWriter("portland2out.txt");

while(scanner.hasNext())
{
    String firstName = scanner.next();
    String lastName = scanner.next();

    outputFile.println(" " + firstName + " " + lastName); 
    scanner.nextLine();

}
outputFile.close();
inputFile.close();
scanner.close();
// ...

您的代码看起来不完整。而循环不是闭合的。此外,您正在关闭循环中的文件,该循环将引发异常。使用以下代码作为基础,并根据您的需求进行调整。例如,使用Scanner方法nextInt()读取数字标记,并在写入输出文件时在其前面加上$sign

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


    public class TestScanner{

    public static void main(String[] args)
    {
        Scanner scanner = null;
        PrintWriter outputFile = null;
        try{
        scanner = new Scanner(new File("portlandvip2.txt"));
        outputFile = new PrintWriter("portland2out.txt");
        String firstName, lastName;
        int num = 0;
        while(scanner.hasNext())
        {
             firstName = scanner.next();
             if(scanner.hasNextInt()){
                 num = scanner.nextInt();
             }
             lastName = scanner.next();
             outputFile.println(" " + firstName + " " + lastName + " $ " + num); 
             scanner.nextLine();

        }
       }catch(IOException e){
           System.out.println("exception:"+e);
       }finally{
           scanner.close();
           outputFile.close();
       }
    }
    }

您的代码看起来不完整。而循环不是闭合的。此外,您正在关闭循环中的文件,该循环将引发异常。使用以下代码作为基础,并根据您的需求进行调整。例如,使用Scanner方法nextInt()读取数字标记,并在写入输出文件时在其前面加上$sign

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


    public class TestScanner{

    public static void main(String[] args)
    {
        Scanner scanner = null;
        PrintWriter outputFile = null;
        try{
        scanner = new Scanner(new File("portlandvip2.txt"));
        outputFile = new PrintWriter("portland2out.txt");
        String firstName, lastName;
        int num = 0;
        while(scanner.hasNext())
        {
             firstName = scanner.next();
             if(scanner.hasNextInt()){
                 num = scanner.nextInt();
             }
             lastName = scanner.next();
             outputFile.println(" " + firstName + " " + lastName + " $ " + num); 
             scanner.nextLine();

        }
       }catch(IOException e){
           System.out.println("exception:"+e);
       }finally{
           scanner.close();
           outputFile.close();
       }
    }
    }

您的代码看起来不完整。而循环不是闭合的。此外,您正在关闭循环中的文件,该循环将引发异常。使用以下代码作为基础,并根据您的需求进行调整。例如,使用Scanner方法nextInt()读取数字标记,并在写入输出文件时在其前面加上$sign

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


    public class TestScanner{

    public static void main(String[] args)
    {
        Scanner scanner = null;
        PrintWriter outputFile = null;
        try{
        scanner = new Scanner(new File("portlandvip2.txt"));
        outputFile = new PrintWriter("portland2out.txt");
        String firstName, lastName;
        int num = 0;
        while(scanner.hasNext())
        {
             firstName = scanner.next();
             if(scanner.hasNextInt()){
                 num = scanner.nextInt();
             }
             lastName = scanner.next();
             outputFile.println(" " + firstName + " " + lastName + " $ " + num); 
             scanner.nextLine();

        }
       }catch(IOException e){
           System.out.println("exception:"+e);
       }finally{
           scanner.close();
           outputFile.close();
       }
    }
    }

您的代码看起来不完整。而循环不是闭合的。此外,您正在关闭循环中的文件,该循环将引发异常。使用以下代码作为基础,并根据您的需求进行调整。例如,使用Scanner方法nextInt()读取数字标记,并在写入输出文件时在其前面加上$sign

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


    public class TestScanner{

    public static void main(String[] args)
    {
        Scanner scanner = null;
        PrintWriter outputFile = null;
        try{
        scanner = new Scanner(new File("portlandvip2.txt"));
        outputFile = new PrintWriter("portland2out.txt");
        String firstName, lastName;
        int num = 0;
        while(scanner.hasNext())
        {
             firstName = scanner.next();
             if(scanner.hasNextInt()){
                 num = scanner.nextInt();
             }
             lastName = scanner.next();
             outputFile.println(" " + firstName + " " + lastName + " $ " + num); 
             scanner.nextLine();

        }
       }catch(IOException e){
           System.out.println("exception:"+e);
       }finally{
           scanner.close();
           outputFile.close();
       }
    }
    }


也没有关闭
扫描仪
,但有关闭
输入文件
,它是
系统周围的
扫描仪
。在
,它不是由该代码打开的(因此不应该由它关闭)。另外,对
close
的调用应该放在
finally
块中,不是吗?@DavidConrad完全同意,我只是集中在最后一个文件中。让我来修正我的回答我有一个后续问题,那么我是在这篇文章中问它,还是在新的帖子中问我的后续问题?新问题更合适,也没有关闭
扫描仪
,但有关闭
输入文件
,这是
系统周围的
扫描仪,它不是由该代码打开的(因此,不应该由它关闭)。另外,对
close
的调用应该放在
finally
块中,不是吗?@DavidConrad完全同意,我只是集中在最后一个文件中。让我来修正我的回答我有一个后续问题,那么我是在这篇文章中问它,还是在新的帖子中问我的后续问题?新问题更合适,也没有关闭
扫描仪
,但有关闭
输入文件
,这是
系统周围的
扫描仪,它不是由该代码打开的(因此,不应该由它关闭)。另外,对
close
的调用应该放在
finally
块中,不是吗?@DavidConrad完全同意,我只是集中在最后一个文件中。让我来修正我的回答我有一个后续问题,那么我是在这篇文章中问它,还是在新的帖子中问我的后续问题?新问题更合适,也没有关闭
扫描仪
,但有关闭
输入文件
,这是
系统周围的
扫描仪,它不是由该代码打开的(因此,不应该由它关闭)。另外,对
close
的调用应该放在
finally
块中,不是吗?@DavidConrad完全同意,我只是集中在最后一个文件中。让我来修正我的回答我有一个后续问题,那么我是在这篇帖子里问这个问题,还是在新的帖子里问我的后续问题?新的问题会更合适我很困惑,那会是什么样子?整数=scanner.nextInt();在字符串lastName之后?如果找到m