Ответ 1
С Java 7 и выше один лайнер с помощью Files:
String text = "Text to save to file";
Files.write(Paths.get("./fileName.txt"), text.getBytes());
Здравствуйте, мне интересно, что является самым простым (и самым простым) способом написать текстовый файл в java. Пожалуйста, прост, потому что я новичок: D Я искал в Интернете и нашел этот код, но понимаю 50% его.
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class WriteToFileExample {
public static void main(String[] args) {
try {
String content = "This is the content to write into file";
File file = new File("C:/Users/Geroge/SkyDrive/Documents/inputFile.txt");
// if file doesnt exists, then create it
if (!file.exists()) {
file.createNewFile();
}
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
bw.write(content);
bw.close();
System.out.println("Done");
} catch (IOException e) {
e.printStackTrace();
}
}
}
С Java 7 и выше один лайнер с помощью Files:
String text = "Text to save to file";
Files.write(Paths.get("./fileName.txt"), text.getBytes());
Вы можете сделать это, используя JAVA 7
новый File API
.
пример кода: `
public class FileWriter7 {
public static void main(String[] args) throws IOException {
List<String> lines = Arrays.asList(new String[] { "This is the content to write into file" });
String filepath = "C:/Users/Geroge/SkyDrive/Documents/inputFile.txt";
writeSmallTextFile(lines, filepath);
}
private static void writeSmallTextFile(List<String> aLines, String aFileName) throws IOException {
Path path = Paths.get(aFileName);
Files.write(path, aLines, StandardCharsets.UTF_8);
}
}
`
Вы можете использовать FileUtils из Apache Commons:
import org.apache.commons.io.FileUtils;
final File file = new File("test.txt");
FileUtils.writeStringToFile(file, "your content", StandardCharsets.UTF_8);
Добавление файла FileWriter (String fileName, boolean append)
try { // this is for monitoring runtime Exception within the block
String content = "This is the content to write into file"; // content to write into the file
File file = new File("C:/Users/Geroge/SkyDrive/Documents/inputFile.txt"); // here file not created here
// if file doesnt exists, then create it
if (!file.exists()) { // checks whether the file is Exist or not
file.createNewFile(); // here if file not exist new file created
}
FileWriter fw = new FileWriter(file.getAbsoluteFile(), true); // creating fileWriter object with the file
BufferedWriter bw = new BufferedWriter(fw); // creating bufferWriter which is used to write the content into the file
bw.write(content); // write method is used to write the given content into the file
bw.close(); // Closes the stream, flushing it first. Once the stream has been closed, further write() or flush() invocations will cause an IOException to be thrown. Closing a previously closed stream has no effect.
System.out.println("Done");
} catch (IOException e) { // if any exception occurs it will catch
e.printStackTrace();
}
Ваш код является самым простым. Но я всегда стараюсь оптимизировать код. Вот пример.
try (BufferedWriter bw = new BufferedWriter(new FileWriter(new File("./output/output.txt")))) {
bw.write("Hello, This is a test message");
bw.close();
}catch (FileNotFoundException ex) {
System.out.println(ex.toString());
}
Files.write() простое решение, как сказал @Dilip Kumar. Я использовал этот способ до тех пор, пока не столкнулся с проблемой, не могу повлиять на разделитель строк (Unix/Windows) CR LF.
Итак, теперь я использую способ записи файлов в формате Java 8, что позволяет мне манипулировать контентом "на лету".:)
List<String> lines = Arrays.asList(new String[] { "line1", "line2" });
Path path = Paths.get(fullFileName);
try (BufferedWriter writer = Files.newBufferedWriter(path)) {
writer.write(lines.stream()
.reduce((sum,currLine) -> sum + "\n" + currLine)
.get());
}
Таким образом, я могу указать разделитель строк, или я могу делать любую магию, такую как TRIM, Uppercase, filtering и т.д.
String content = "your content here";
Path path = Paths.get("/data/output.txt");
if(!Files.exists(path)){
Files.createFile(path);
}
BufferedWriter writer = Files.newBufferedWriter(path);
writer.write(content);
File file = new File("path/file.name");
IOUtils.write("content", new FileOutputStream(file));
IOUtils также можно легко использовать для записи/чтения файлов с помощью java 8.