Как написать текстовый файл Java
Следующий код не создает файл (я не вижу файл в любом месте).
Что не хватает?
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();
}
Ответы
Ответ 1
Я думаю, что ваши ожидания и реальность не совпадают (но когда они когда-либо;))
В принципе, если вы думаете, что файл написан и где файл на самом деле написан, не равны (hmmm, возможно, я должен написать инструкцию 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) {
}
}
}
}
Также обратите внимание, что ваш пример перезапишет любые существующие файлы. Если вы хотите добавить текст в файл, вы должны сделать следующее:
writer = new BufferedWriter(new FileWriter(logFile, true));
Ответ 2
Я хотел бы добавить немного больше в ответ MadProgrammer.
В случае многострочной записи при выполнении команды
writer.write(string);
можно заметить, что символы новой строки опущены или пропущены в записанном файле, даже если они появляются во время отладки или если один и тот же текст печатается на терминале с помощью
System.out.println("\n");
Таким образом, весь текст появляется как один большой фрагмент текста, который нежелателен в большинстве случаев.
Символ новой строки может зависеть от платформы, поэтому лучше получить этот символ из свойств системы java, используя
String newline = System.getProperty("line.separator");
а затем используя переменную новой строки вместо "\n". Это даст результат так, как вы хотите.
Ответ 3
В java 7 теперь можно сделать
try(BufferedWriter w = ....)
{
w.write(...);
}
catch(IOException)
{
}
и w.close будет выполнено автоматически
Ответ 4
Он не создает файл, потому что вы никогда не создали файл. Вы сделали для этого объект. Создание экземпляра не создает файл.
File newFile = new File("directory", "fileName.txt");
Вы можете сделать это, чтобы создать файл:
newFile.createNewFile();
Вы можете сделать это, чтобы создать папку:
newFile.mkdir();
Ответ 5
Вы можете попробовать Java-библиотеку. FileUtils, у него есть много функций, которые записываются в файлы.
Ответ 6
Он работает со мной. Убедитесь, что вы добавили ".txt" рядом с timeLog. Я использовал его в простой программе, открытой с помощью Netbeans, и он записывает программу в основную папку (где находятся папки builder и src).
Ответ 7
Использование java 8 LocalDateTime
и java 7 try-with оператора:
public class WriteFile {
public static void main(String[] args) {
String timeLog = DateTimeFormatter.ofPattern("yyyyMMdd_HHmmss").format(LocalDateTime.now());
File logFile = new File(timeLog);
try (BufferedWriter bw = new BufferedWriter(new FileWriter(logFile)))
{
System.out.println("File was written to: " + logFile.getCanonicalPath());
bw.write("Hello world!");
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
Ответ 8
Самый простой способ для меня просто так:
try {
FileWriter writer = new FileWriter("C:/Your/Absolute/Path/YourFile.txt");
writer.write("Wow, this is so easy!");
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
Полезные советы & фокусы:
Дайте ему определенный путь:
новый FileWriter ("C: /Your/Absolute/Path/YourFile.txt");
Новая строка
writer.write( "\ г\п");
Добавить строки в существующий текст
новый FileWriter ("log.txt");
Надеюсь, что это работает!