Java:读/写文件等

Java:读/写文件等,java,bufferedreader,java-io,Java,Bufferedreader,Java Io,我创建了一个包含2个方法的类,它们要么处理在文件中的写入,要么处理从文件中读取 我想出了这样的办法: package YBot; import java.io.*; public class FollowerChecker { public static StringBuilder sb; static String readFile(String fileName) throws IOException { BufferedReader br = new

我创建了一个包含2个方法的类,它们要么处理在文件中的写入,要么处理从文件中读取

我想出了这样的办法:

package YBot;
import java.io.*;



public class FollowerChecker {



public static StringBuilder sb;


    static String readFile(String fileName) throws IOException {
        BufferedReader br = new BufferedReader(new FileReader(fileName));
        try {
            sb = new StringBuilder();
            String line = br.readLine();

            while (line != null) {
                sb.append(line);
                sb.append("\n");
                line = br.readLine();

            }
            return sb.toString();
        } finally {
            br.close();

        }
    }



    public static void Writer() {

        FileWriter fw = null;

        try {
            fw = new FileWriter("donottouch.txt");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }


        StringWriter sw = new StringWriter();
        sw.write(TwitchStatus.totalfollows);


        try {
            fw.write(sw.toString());
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }


        try {
            fw.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
现在我的问题是:


如果“donottouch.txt”文件不存在,或者如果该文件为空,则如何添加创建该文件的函数以在其中写入“0”?当我的程序启动时,它将读取文件中的数字,然后,如果数字被更改,它将重写它。所以最好的办法是,当它试图阅读而它不在那里时,它立即创建它并重新阅读。希望有人能给我举一些例子=)

我是如何处理的:

public static boolean checkIfExists(String path) {
    if (!new File(path).exists()) {
        return false;
    } else {
        return true;
    }
}

public static String readFile(String file) throws IOException {
    BufferedReader reader = new BufferedReader(new FileReader (file));
    String line;
    StringBuilder sb = new StringBuilder();

    while( ( line = reader.readLine() ) != null) {
        sb.append( line );
    }
    reader.close();
    return sb.toString();

}

public static void writeFile(String path) throws FileNotFoundException, 
                                                UnsupportedEncodingException {
    PrintWriter writer = new PrintWriter(path, "UTF-8");
    writer.println("0");
    writer.close();
    return;
}

public static void main(String args[]) {
    /*Gets absolute path to your project folder, assuming that is where
     * you are storing this text file. Otherwise hard code your path
     * accordingly.
     */
    File file = new File("");
    String fileGet = file.getAbsolutePath();
    StringBuilder sb = new StringBuilder();
    String path = sb.append(fileGet.toString() + "/donottouch.txt").toString();

    String result=null;

    if(!checkIfExists(path)) {
        try {
            writeFile(path);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        System.out.println("File created: 'donottouch.txt'");

    } else {
        try {
            result = readFile(path);
        } catch (IOException e) {
            e.printStackTrace();
        }

        if( result.length() == 0 ) {
            try {
                writeFile(path);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
            System.out.println("File amended: 'donottouch.txt'");
        }
        System.out.println("File exists: 'donottouch.txt'");
    }
}

很明显,我创建了一个主类,并在一个类之外完成了所有这些工作,这与您不同,但集成起来应该非常简单。它的前提是假定您将“donottouch.txt”存储在项目的源文件中,但是您可以轻松地将获取绝对路径的代码段更改为正在查找的文件夹的硬编码路径。希望这有帮助

您可以读取,那么我如何调用您的代码来将字符串写入文件?在我的代码中,我刚刚调用了FollowerChecker.Writer();它确实将字符串“totalfollows”写入文件。我只是不明白你的“路径”的事。文件位于项目源中。路径是文件的绝对路径。它只是一个结构为“/Users/YourName/PathToYourProjectFolder/../donottouch.txt”的字符串,因此传入路径实际上就是传入文件。这样,您就不必在文件夹移动时硬编码整个路径。checkIfExists()方法所做的是检查项目路径中是否存在“donottouch.txt”文件,如果存在,则通过readFile()方法读取。从这里开始,如果它是空的或不存在,则通过writeFile()方法在其内部写入“0”。我是否回答了您的问题?您可能无法使用我的框架的确切结构,但是可以将其中的方法合并到您的代码中。希望这至少对一些人有所帮助:)嗯,我对java还是新手,所以我不完全理解。。但我想我得试试。我想再问一次它是否有用。谢谢。好吧,我太笨了,反正我的东西也没用了(