Java.io.File不';不要像应该的那样删除文件

Java.io.File不';不要像应该的那样删除文件,java,bufferedreader,java-io,bufferedwriter,Java,Bufferedreader,Java Io,Bufferedwriter,我想复制.txt文件中的文本,但不复制最后一行。 所以我要做的是,在BufferedReader的帮助下读取整个文件(接受最后一行)。 然后删除旧文件并创建新文件。 然后我尝试在新文件中写入复制的文本 public class BufferedIO { public BufferedWriter bufWriter; public BufferedReader bufReader; private StringBuilder inhalt; private Fi

我想复制.txt文件中的文本,但不复制最后一行。 所以我要做的是,在BufferedReader的帮助下读取整个文件(接受最后一行)。 然后删除旧文件并创建新文件。 然后我尝试在新文件中写入复制的文本

public class BufferedIO {
    public BufferedWriter bufWriter;
    public BufferedReader bufReader; 
    private StringBuilder inhalt;
    private File file; 
    private String inhaltString; 
    private int anzZeichen; 

    public BufferedIO(String Speicheradresse) {

        try {

            file = new File(Speicheradresse); //file object gets initialized with already existing File "Stundenzettel.txt"

            bufWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file, true))); 

            bufReader = new BufferedReader(new InputStreamReader(new FileInputStream(file)));

            // the next 8 are there to count how many Characters are inside the File "Stundenzettel.txt" 
            inhalt = new StringBuilder(""); 
            inhaltString = bufReader.readLine();

            bufReader.mark(anzZeichen);

            while(inhaltString != null) {
                inhalt.append(inhaltString).append("\n");
                inhaltString = bufReader.readLine(); 
            }

            anzZeichen = inhalt.length(); 

            }
            catch(IOException exc) {
                System.out.println("IOException... Well.. That might be a problem."); 
            }

    }
    //function where the problem is situated 
    public void deleteLastInput() throws IOException {

        bufReader.close();
        bufReader = new BufferedReader(new InputStreamReader(new FileInputStream(file))); 

        StringBuilder inhaltKopie = new StringBuilder(""); 
        String newInhalt; 
        //everyLine has 150 character, so as soon as there aren't more than 150 character left, the Reader stops to read the File. 
        while(anzZeichen > 150) { 
            inhaltKopie.append(bufReader.readLine()).append("\n");
            anzZeichen -= 150; 
        }
        //String newInhalt is initialized with the copied Text 
        newInhalt = inhaltKopie.toString(); 

        //right here I close the bufferedReader and the BufferedWriter so that I can delete the file
        bufReader.close();
        bufWriter.close();

        //old file gets deleted 
        file.delete(); 

        //creating the new File
        file.createNewFile(); 

        //initializing the BufferedWriter + bufferedReader to the new File
        bufReader = new BufferedReader(new InputStreamReader(new FileInputStream("Resources/Stundenzettel.txt"))); 
        bufWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("Resources/Stundenzettel", true))); 

        //bufWriter writes the copied Text inside the new File
        bufWriter.write(newInhalt);

        //not so important for this problem:  
        anzZeichen = newInhalt.length(); 
        }
}
但是程序不会删除旧文件,它只是删除这个文件中的所有内容,所以文件是空的。
程序也不会在新文件中写入任何内容。

Du must den gesamten Dateipfad angeben。Nicht nur“irgendwas.txt”sonder“c:/…”


您必须指定整个文件路径。您需要在
deleteLastInput()
方法上使用相同的文件,而不是像“c:/…”这样的“something.txt”

bufReader = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
bufWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file, true)));
尝试在bufWriter.write(newInhalt)之后使用bufWriter.flush()。
请注意,delete()返回文件是否被删除的状态。可能程序没有适当的权限删除文件

以下代码将加载文件内容,删除最后一行并将修改后的内容写回同一文件。结果是原始文件,但没有最后一行

Files.delete(Paths.get(your_file_name)); //should work
/*所需的导入。
导入java.io.IOException;
导入java.nio.file.Files;
导入java.nio.file.Path;
导入java.nio.file.path;
导入java.nio.file.StandardOpenOption;
导入java.util.List;
*/
Path=Path.get(“Path”、“to”、“your”、“file”);
试一试{
列表行=文件。readAllLines(路径);
int count=lines.size();
如果(计数>0){
删除的字符串=行。删除(计数-1);
}
文件.write(路径、行、StandardOpenOption.write、StandardOpenOption.TRUNCATE_现有);
}
捕获(IOXIO异常){
xIo.printStackTrace();
}

尝试使用文件。在此处删除(fileToDeletePath)。我过去在文件方面也遇到过类似的问题,但在文件方面没有任何问题。这看起来像:Files.delete(file.getAbsolutePath());以前,我不知道文件是如何保存在Java项目中的。还有一个问题,哦,好家伙。忘了这个,这就解释了为什么新文件保持为空。在代码的另一点上使用了.flush()方法,idk why我在这一点上忘记了它。谢谢你,伙计^^