2014-12-12 8 views
0

주어진 디렉토리에 방금 작성된 파일에 쓰는 데 BufferedWriter이 있는데, 어떤 이유로 다른 사람이 읽는 텍스트를 쓰지 않습니다BufferedWriter가 텍스트 파일에 텍스트를 쓰지 않습니다.

private static final String tempFileDir = System.getProperty("user.dir") + "/TempATM.txt"; 
File tempFile = new File(tempFileDir); //Create temporary file to write new info to 
File toRenameTo = new File("VirtualATM.txt"); //filename to rename temp file to 
if (!tempFile.exists() && !tempFile.isDirectory()) { 
    tempFile.createNewFile(); //Create temp file if it doesn't already exist. 
} 
FileOutputStream fos = new FileOutputStream(tempFile, true); //For writing new balance 
Writer bw = new BufferedWriter(new OutputStreamWriter(fos, "UTF8"));//For writing new balance 
String newLineRead = null; 
FileReader fileReader = new FileReader("VirtualATM.txt");//for reading from file 
BufferedReader newBufferedReader = new BufferedReader(fileReader);//for reading from file 
while((newLineRead = newBufferedReader.readLine()) != null){ 
    if(!newLineRead.contains(cardNumberStr)){ 
     bw.append(newLineRead); //If the line does not contain user entered card number, write line to new file. 
     ((BufferedWriter) bw).newLine(); 
    }else if(newLineRead.contains(cardNumberStr)){ 
     bw.append(newAccountDetails); //Write updated account details if the line read contains users account number 
     ((BufferedWriter) bw).newLine(); 
    } 
} 
File toDeleteFile = new File("dirToWriteFile"); //File path to delete the file. 
if(!toDeleteFile.delete()){ 
    JOptionPane.showMessageDialog(null, "FATAL ERROR! Could not delete VirtualATM.txt", "Error", JOptionPane.ERROR_MESSAGE); // for if there is an error when deleting file 
} 
if(!file.renameTo(toRenameTo)){ 
    JOptionPane.showMessageDialog(null, "FATAL ERROR! Could not rename the file to VirtualATM.txt", "Error", JOptionPane.ERROR_MESSAGE);//for if there is an error renaming file 
} 

편집 :

나는 또한 어떤이 문제를 일으킬 수있는 무엇을 제안 할 수 삭제하고 텍스트 파일의 이름을 변경하는 데 문제가 있어요, 등 무엇 SecurityExceptions을 할 수있다 파일은 여기 내 코드입니다 Java이 (가) 삭제 및 이름 바꾸기를 방지합니다. 텍스트 파일 (.txt)은 Windows 8.1에 있습니까?

+0

그렇지, 내가, 당신이 자바 7 +를 사용합니까 말해? – fge

+0

@fge 예, 있습니다. – James

+0

@fge 필자는 코드 끝 부분에서 수행했는데, 필자가 사용하는 코드를 선택하지 않았거나 특정 시간에 코드를 플러시해야합니까? – James

답변

2

당신은 당신은 작성 후 디스크 에 버퍼를 플래시합니다 하나

bw.flush(); 

같은 버퍼 또는

bw.close();//handle exception if you are not using AutoCloseable feature. 
+0

데이터를 쓰기 전에'bw.flush()'메서드를 호출했지만 여전히 주어진 텍스트 파일에 쓰지 않습니다? – James

1

같은 작가를 닫 데이터를 쓰기 버퍼 게시물을 플러시하는 중 필요 사용하는 데이터 :

bw.flush(); 

또는 if 이 도움이

bw.close(); 



희망 : 당신이 데이터를 작성 완료, 당신은 항상 자동으로 종료 사용하기 전에 디스크에 데이터를 플래시합니다 작가를 닫아야합니다. 행운을 빌며 즐겁게 프로그래밍하세요!

건배,

고원