Como escrever arquivo de texto Java

O código a seguir não produz um arquivo (não consigo ver o arquivo em nenhum lugar). O que está faltando?

try { //create a temporary file String timeLog = new SimpleDateFormat("yyyyMMdd_HHmmss").format( Calendar.getInstance().getTime()); File logFile=new File(timeLog); BufferedWriter writer = new BufferedWriter(new FileWriter(logFile)); writer.write (string); //Close writer writer.close(); } catch(Exception e) { e.printStackTrace(); } 

Eu acho que suas expectativas e realidade não combinam (mas quando é que elas nunca);)

Basicamente, onde você acha que o arquivo está escrito e onde o arquivo está realmente escrito não são iguais (hmmm, talvez eu deva escrever uma declaração if ;))

 public class TestWriteFile { public static void main(String[] args) { BufferedWriter writer = null; try { //create a temporary file String timeLog = new SimpleDateFormat("yyyyMMdd_HHmmss").format(Calendar.getInstance().getTime()); File logFile = new File(timeLog); // This will output the full path where the file will be written to... System.out.println(logFile.getCanonicalPath()); writer = new BufferedWriter(new FileWriter(logFile)); writer.write("Hello world!"); } catch (Exception e) { e.printStackTrace(); } finally { try { // Close the writer regardless of what happens... writer.close(); } catch (Exception e) { } } } } 

Observe também que o seu exemplo irá sobrescrever todos os arquivos existentes. Se você quiser append o texto ao arquivo, faça o seguinte:

 writer = new BufferedWriter(new FileWriter(logFile, true)); 

Eu gostaria de acrescentar um pouco mais à resposta do MadProgrammer.

No caso de escrita múltipla de linha, ao executar o comando

 writer.write(string); 

pode-se notar que os caracteres de nova linha são omitidos ou ignorados no arquivo escrito, mesmo que apareçam durante a debugging, ou se o mesmo texto for impresso no terminal com,

 System.out.println("\n"); 

Assim, todo o texto vem como um grande pedaço de texto que é indesejável na maioria dos casos. O caractere de nova linha pode ser dependente da plataforma, portanto, é melhor obter esse caractere das propriedades do sistema java usando

 String newline = System.getProperty("line.separator"); 

e, em seguida, usando a variável newline em vez de “\ n”. Isto irá obter a saída da maneira que você quiser.

No java 7 agora pode fazer

 try(BufferedWriter w = ....) { w.write(...); } catch(IOException) { } 

e o w.close será feito automaticamente

Não está criando um arquivo porque você nunca criou o arquivo. Você fez um object para isso. Criar uma instância não cria o arquivo.

 File newFile = new File("directory", "fileName.txt"); 

Você pode fazer isso para criar um arquivo:

 newFile.createNewFile(); 

Você pode fazer isso para criar uma pasta:

 newFile.mkdir(); 

Você pode tentar uma biblioteca Java. FileUtils , Ele tem muitas funções que gravam em arquivos.

Isso funciona comigo. Certifique-se de append “.txt” ao lado de timeLog. Eu o usei em um programa simples aberto com o Netbeans e ele grava o programa na pasta principal (onde estão as pastas builder e src).