首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在读取输入文件后操作输出文件?

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

Stack Overflow用户
提问于 2014-04-30 18:33:59
回答 2查看 433关注 0票数 0

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

输入文件(portlandvip2.txt):

法院50 方框10 25俱乐部 无赖康威10盒 Loretta Barrett 3法院 Loras Tyrell 5俱乐部 Margaery Tyrell 8盒 Roslin Frey 2盒 Sansa Stark 2俱乐部 琼恩·雪诺5俱乐部 Edmure Tully 3盒 乔佛里·拜拉席恩20法院 史坦尼斯拜拉席恩4俱乐部 Jaime Lannister 2盒 Cersei Lannister 1法院 Beric Dondarrion 8法院 巴伦·格雷霍伊16盒 奥莱娜·提雷尔第4法庭 梅斯·提利尔5盒 提利昂兰尼斯特2俱乐部 Sandor Clegane 2法院 Gregor Clegane 6俱乐部 桑威尔·塔利3俱乐部 Petyr Baelish第6法院

这是一个输出文件应该是什么样子的示例(portland2out.txt):

法庭$50 方框10美元 俱乐部25美元 无赖康威100.00美元 洛丽塔·巴雷特150.00美元

我遇到的问题是所有的输出文件都是Petyr。

到目前为止,这是一个项目:

代码语言:javascript
复制
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();
        }
    }
}
EN

回答 2

Stack Overflow用户

发布于 2014-04-30 18:48:41

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

代码语言:javascript
复制
// ...


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();
// ...
票数 2
EN

Stack Overflow用户

发布于 2014-04-30 19:05:24

你的代码看上去不完整。循环未关闭。此外,您正在关闭循环内的文件,这将引发异常。使用下面的代码作为基础,并根据需要对其进行调整。例如,使用Scanner方法nextInt()读取数字标记,并在写入输出文件时在它们前面加上$符号。

代码语言:javascript
复制
    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();
       }
    }
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23395560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档