加载并保存到txt文件

时间:2013-12-14 12:06:19

标签: java text io

在我之前的帖子中,我忘了向人们展示我自己试图尝试这一点,请放心,过去2个小时我都试图解决这个愚蠢的问题。

我需要做以下事情:

  • 搜索名为“file.txt”的文件,如果为null则创建它。
  • 读取文件以查找整数(应该是整个文件中唯一的内容)
  • 如果整数不存在,则创建它并将其设置为1
  • 如果它已经存在,则向其中添加1,然后再次保存
  • 再次打开文件,获取整数并将其打印到控制台。

这是我设法得到的:

package science;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.Reader;

public class DumpData {

    static void writeStringToFile(String gender, String securityLevel){
        try {




            File file = new File(gender + securityLevel + ".txt");
            //file.getParentFile().mkdirs();

            PrintWriter pr = new PrintWriter(file);

            FileInputStream fs = new FileInputStream(gender + securityLevel + ".txt");
            BufferedReader br = new BufferedReader(new InputStreamReader(fs));
            if (br.readLine() == null) {
                pr.println("" + 0);
            }

            //String first = br.readLine();
            //System.out.println(first);
            try{
                String first = br.readLine();
                  int num = Integer.parseInt(first);
                  int add = (num + 1);
                  pr.println("" + add);
                  pr.close();
                  System.out.println(num);
                } catch (NumberFormatException e) {
                  // not an integer!
                    System.out.println("error");
                    System.out.println(br.readLine());
                }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    } 
}

我不停地将这条消息“错误”打印到控制台上,经过更多检查,我发现根本没有任何东西被保存到.txt文件中。我完全希望我的代码在每次执行方法时都在文件中添加1。

2 个答案:

答案 0 :(得分:1)

你试图读两行

if (br.readLine() == null) {         <-- first time
    pr.println("" + 0);
}

 //String first = br.readLine();
 //System.out.println(first);
 try{
     String first = br.readLine();   <-- second time

第二次失败,因为 没有第二行。

而只是这样做

String line;
while ((line = br.readLine()) != null){
    int num = Integer.parseInt(line.trim());
    ...
}

您不需要第一个if语句

答案 1 :(得分:0)

我强烈建议您在处理文件时使用Apache COmmons IO。

这里是链接:http://commons.apache.org/proper/commons-io/

查看FileUtils类。