|
| 1 | +## 用java怎么样创建一个文件并向该文件写文本内容 |
| 2 | + |
| 3 | +### 问:在java里最简单的创建文件写文件的方法是什么 |
| 4 | + |
| 5 | +### 最佳答案: |
| 6 | +创建一个文本文件(注意:如果该文件存在,则会覆盖该文件) |
| 7 | +````java |
| 8 | +PrintWriter writer = new PrintWriter("the-file-name.txt", "UTF-8"); |
| 9 | +writer.println("The first line"); |
| 10 | +writer.println("The second line"); |
| 11 | +writer.close(); |
| 12 | +```` |
| 13 | +创建一个位二进制文件(同样会覆盖这文件) |
| 14 | +````java |
| 15 | +byte data[] = ... |
| 16 | +FileOutputStream out = new FileOutputStream("the-file-name"); |
| 17 | +out.write(data); |
| 18 | +out.close(); |
| 19 | +```` |
| 20 | + |
| 21 | +Java 7+ 用户可以用[`File`](http://docs.oracle.com/javase/7/docs/api/index.html?java/nio/file/Files.html)类来写文件 |
| 22 | +创建一个文本文件 |
| 23 | +````java |
| 24 | +List<String> lines = Arrays.asList("The first line", "The second line"); |
| 25 | +Path file = Paths.get("the-file-name.txt"); |
| 26 | +Files.write(file, lines, Charset.forName("UTF-8")); |
| 27 | +//Files.write(file, lines, Charset.forName("UTF-8"), StandardOpenOption.APPEND); |
| 28 | +```` |
| 29 | +创建一个二进制文件 |
| 30 | +````java |
| 31 | +byte data[] = ... |
| 32 | +Path file = Paths.get("the-file-name"); |
| 33 | +Files.write(file, data); |
| 34 | +//Files.write(file, data, StandardOpenOption.APPEND); |
| 35 | +```` |
| 36 | + |
| 37 | +### 其他的答案(1): |
| 38 | +在Java 7+中 |
| 39 | +````java |
| 40 | +try (Writer writer = new BufferedWriter(new OutputStreamWriter( |
| 41 | + new FileOutputStream("filename.txt"), "utf-8"))) { |
| 42 | + writer.write("something"); |
| 43 | +} |
| 44 | +```` |
| 45 | +还有一些实用的方法如下: |
| 46 | +* [`FileUtils.writeStringtoFile(..)`](https://commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/FileUtils.html#writeStringToFile%28java.io.File,%20java.lang.String,%20java.nio.charset.Charset%29) 来自于 commons-io 包 |
| 47 | +* [`Files.write(..)`](http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/io/Files.html#write%28java.lang.CharSequence,%20java.io.File,%20java.nio.charset.Charset%29) 来自于 guava |
| 48 | +Note also that you can use a FileWriter, but it uses the default encoding, |
| 49 | +which is often a bad idea - it's best to specify the encoding explicitly. |
| 50 | +还要注意可以使用 `FileWriter`,但是它使用的是默认编码,这不是很好的方法,最好是明确指定编码 |
| 51 | + |
| 52 | + |
| 53 | +下面是来自于prior-to-java-7的原始方法 |
| 54 | +````java |
| 55 | +Writer writer = null; |
| 56 | + |
| 57 | +try { |
| 58 | + writer = new BufferedWriter(new OutputStreamWriter( |
| 59 | + new FileOutputStream("filename.txt"), "utf-8")); |
| 60 | + writer.write("Something"); |
| 61 | +} catch (IOException ex) { |
| 62 | + // report |
| 63 | +} finally { |
| 64 | + try {writer.close();} catch (Exception ex) {/*ignore*/} |
| 65 | +} |
| 66 | +```` |
| 67 | +可以看[`Reading, Writing, and Creating Files`](http://docs.oracle.com/javase/tutorial/essential/io/file.html)(包含NIO2) |
| 68 | + |
| 69 | +### 其他答案(2): |
| 70 | +````java |
| 71 | +public class Program { |
| 72 | + public static void main(String[] args) { |
| 73 | + String text = "Hello world"; |
| 74 | + BufferedWriter output = null; |
| 75 | + try { |
| 76 | + File file = new File("example.txt"); |
| 77 | + output = new BufferedWriter(new FileWriter(file)); |
| 78 | + output.write(text); |
| 79 | + } catch ( IOException e ) { |
| 80 | + e.printStackTrace(); |
| 81 | + } finally { |
| 82 | + if ( output != null ) output.close(); |
| 83 | + } |
| 84 | + } |
| 85 | +} |
| 86 | +```` |
| 87 | + |
| 88 | +### 其他答案(3): |
| 89 | +如果已经有想要写到文件中的内容,[`java.nio.file.Files`](https://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html) 作为 Java 7 附加部分的native I/O,提供了简单高效的方法来实现你的目标 |
| 90 | + |
| 91 | +基本上创建文件,写文件只需要一行,而且是只需一个方法调用! |
| 92 | +下面的例子创建并且写了6个不同的文件来展示是怎么使用的 |
| 93 | + |
| 94 | +````java |
| 95 | +Charset utf8 = StandardCharsets.UTF_8; |
| 96 | +List<String> lines = Arrays.asList("1st line", "2nd line"); |
| 97 | +byte[] data = {1, 2, 3, 4, 5}; |
| 98 | + |
| 99 | +try { |
| 100 | + Files.write(Paths.get("file1.bin"), data); |
| 101 | + Files.write(Paths.get("file2.bin"), data, |
| 102 | + StandardOpenOption.CREATE, StandardOpenOption.APPEND); |
| 103 | + Files.write(Paths.get("file3.txt"), "content".getBytes()); |
| 104 | + Files.write(Paths.get("file4.txt"), "content".getBytes(utf8)); |
| 105 | + Files.write(Paths.get("file5.txt"), lines, utf8); |
| 106 | + Files.write(Paths.get("file6.txt"), lines, utf8, |
| 107 | + StandardOpenOption.CREATE, StandardOpenOption.APPEND); |
| 108 | +} catch (IOException e) { |
| 109 | + e.printStackTrace(); |
| 110 | +} |
| 111 | +```` |
| 112 | + |
| 113 | +### 其他答案(4): |
| 114 | +下面是一个小程序来创建和写文件。该版本的代码比较长,但是可以容易理解 |
| 115 | +````java |
| 116 | +import java.io.BufferedWriter; |
| 117 | +import java.io.File; |
| 118 | +import java.io.FileOutputStream; |
| 119 | +import java.io.IOException; |
| 120 | +import java.io.OutputStreamWriter; |
| 121 | +import java.io.Writer; |
| 122 | + |
| 123 | +public class writer { |
| 124 | + public void writing() { |
| 125 | + try { |
| 126 | + //Whatever the file path is. |
| 127 | + File statText = new File("E:/Java/Reference/bin/images/statsTest.txt"); |
| 128 | + FileOutputStream is = new FileOutputStream(statText); |
| 129 | + OutputStreamWriter osw = new OutputStreamWriter(is); |
| 130 | + Writer w = new BufferedWriter(osw); |
| 131 | + w.write("POTATO!!!"); |
| 132 | + w.close(); |
| 133 | + } catch (IOException e) { |
| 134 | + System.err.println("Problem writing to the file statsTest.txt"); |
| 135 | + } |
| 136 | + } |
| 137 | + |
| 138 | + public static void main(String[]args) { |
| 139 | + writer write = new writer(); |
| 140 | + write.writing(); |
| 141 | + } |
| 142 | +} |
| 143 | +```` |
| 144 | + |
| 145 | + |
| 146 | + |
| 147 | + |
| 148 | +stackoverflow链接: |
| 149 | +http://stackoverflow.com/questions/2885173/how-to-create-a-file-and-write-to-a-file-in-java |
0 commit comments