java写文件
1 使用FileWrite写文本文件
2
3
4 public static void useFileWriter(String fileName) throws IOException {
5 File file = new File(fileName);
6 FileWriter fileWriter = new FileWriter(file);
7
8 fileWriter.write("it is a test");
9
10 fileWriter.close();
11 }
12
13
14
15 使用BufferedWrite写文本文件
16
17
18 public static void useBufferedWriter(String fileName) throws IOException{
19 File file = new File(fileName);
20 BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(fileName));
21
22 bufferedWriter.write("hello bufferedwrite");
23
24 bufferedWriter.flush();
25 bufferedWriter.close();
26 }
27
28
29
30 使用Files写文件,最简单
31
32
33 public static void useJdk8(String fileName) throws IOException {
34 Files.write(Paths.get(fileName), "hello usejdk8".getBytes(), StandardOpenOption.CREATE);
35 }
36
37
38 私用FileOutputStream写文件
39
40
41 public static void useFileOutputStream(String fileName) throws IOException{
42 File file = new File(fileName);
43
44 FileOutputStream fileOutputStream = new FileOutputStream(file);
45 fileOutputStream.write("hello fileoutputstream".getBytes());
46
47 fileOutputStream.flush();
48
49 fileOutputStream.close();
50 }
51
52
53
54 使用BufferedFileOutputStream写文件,速度最快,数据cache在jvm中,容易丢数据
55
56
57 public static void useBufferedFileOutputStream(String fileName) {
58 File file = new File(fileName);
59
60
61 BufferedOutputStream bufferedOutputStream = null;
62 try {
63 bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(file));
64
65 bufferedOutputStream.write("hello BufferedFileOutputStream".getBytes());
66
67 bufferedOutputStream.flush();
68 }catch(IOException e) {
69
70
71 }finally {
72 if(bufferedOutputStream!=null) {
73 try {
74 bufferedOutputStream.close();
75 } catch (IOException e1) {
76 //TODO do something
77 }
78 }
79 }
80
81 }
82
83
84
85 使用RandomAccessFile写文件,速度最慢,直接刷盘
86
87
88 public static void useRandomAccessFile(String fileName) {
89 RandomAccessFile randomAccessFile = null;
90
91
92 try {
93 randomAccessFile = new RandomAccessFile(fileName, "rw");
94 randomAccessFile.seek(15); //从第15个byte位置开始写, 原文件的第15个之后的字符会被覆盖一部分
95 randomAccessFile.write("useRandomAccessFile".getBytes());
96 } catch (IOException e) {
97 e.printStackTrace();
98 }finally {
99 if(randomAccessFile!=null) {
100 try {
101 randomAccessFile.close();
102 } catch (IOException e) {
103 e.printStackTrace();
104 }
105 }
106
107 }
108 }
109
110
111
112 使用FileChannel写文件
113
114
115 public static void useFileChannel(String fileName) {
116
117 FileChannel fileChannel = null;
118 try {
119 FileChannel channel = new FileOutputStream(fileName).getChannel();
120 channel.write(ByteBuffer.wrap("useFileChannel".getBytes()));
121 } catch (IOException e) {
122 e.printStackTrace();
123 } finally {
124 if(fileChannel!=null) {
125 try {
126 fileChannel.close();
127 } catch (IOException e) {
128 e.printStackTrace();
129 }
130 }
131 }
132 }
133
134
135
136 使用MappedByteBuffer写文件,速度快,OS级别内存映射
137
138
139 public static void useMappedByteBuffer(String fileName){
140
141 RandomAccessFile randomAccessFile = null;
142
143 try {
144 randomAccessFile = new RandomAccessFile(fileName, "rw");
145 FileChannel fileChannel = randomAccessFile.getChannel();
146
147
148 String content = "useMappedByteBuffer";
149
150 MappedByteBuffer mappedByteBuffer = fileChannel.map(FileChannel.MapMode.READ_WRITE, 0, content.getBytes().length);
151
152 mappedByteBuffer.put(content.getBytes()); //mappedByteBuffer大小不能小于content的字节数
153
154
155 } catch (IOException e) {
156 e.printStackTrace();
157 }finally {
158 if(randomAccessFile!=null) {
159 try {
160 randomAccessFile.close();
161 } catch (IOException e) {
162 e.printStackTrace();
163 }
164 }
165 }
166 }
2
3
4 public static void useFileWriter(String fileName) throws IOException {
5 File file = new File(fileName);
6 FileWriter fileWriter = new FileWriter(file);
7
8 fileWriter.write("it is a test");
9
10 fileWriter.close();
11 }
12
13
14
15 使用BufferedWrite写文本文件
16
17
18 public static void useBufferedWriter(String fileName) throws IOException{
19 File file = new File(fileName);
20 BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(fileName));
21
22 bufferedWriter.write("hello bufferedwrite");
23
24 bufferedWriter.flush();
25 bufferedWriter.close();
26 }
27
28
29
30 使用Files写文件,最简单
31
32
33 public static void useJdk8(String fileName) throws IOException {
34 Files.write(Paths.get(fileName), "hello usejdk8".getBytes(), StandardOpenOption.CREATE);
35 }
36
37
38 私用FileOutputStream写文件
39
40
41 public static void useFileOutputStream(String fileName) throws IOException{
42 File file = new File(fileName);
43
44 FileOutputStream fileOutputStream = new FileOutputStream(file);
45 fileOutputStream.write("hello fileoutputstream".getBytes());
46
47 fileOutputStream.flush();
48
49 fileOutputStream.close();
50 }
51
52
53
54 使用BufferedFileOutputStream写文件,速度最快,数据cache在jvm中,容易丢数据
55
56
57 public static void useBufferedFileOutputStream(String fileName) {
58 File file = new File(fileName);
59
60
61 BufferedOutputStream bufferedOutputStream = null;
62 try {
63 bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(file));
64
65 bufferedOutputStream.write("hello BufferedFileOutputStream".getBytes());
66
67 bufferedOutputStream.flush();
68 }catch(IOException e) {
69
70
71 }finally {
72 if(bufferedOutputStream!=null) {
73 try {
74 bufferedOutputStream.close();
75 } catch (IOException e1) {
76 //TODO do something
77 }
78 }
79 }
80
81 }
82
83
84
85 使用RandomAccessFile写文件,速度最慢,直接刷盘
86
87
88 public static void useRandomAccessFile(String fileName) {
89 RandomAccessFile randomAccessFile = null;
90
91
92 try {
93 randomAccessFile = new RandomAccessFile(fileName, "rw");
94 randomAccessFile.seek(15); //从第15个byte位置开始写, 原文件的第15个之后的字符会被覆盖一部分
95 randomAccessFile.write("useRandomAccessFile".getBytes());
96 } catch (IOException e) {
97 e.printStackTrace();
98 }finally {
99 if(randomAccessFile!=null) {
100 try {
101 randomAccessFile.close();
102 } catch (IOException e) {
103 e.printStackTrace();
104 }
105 }
106
107 }
108 }
109
110
111
112 使用FileChannel写文件
113
114
115 public static void useFileChannel(String fileName) {
116
117 FileChannel fileChannel = null;
118 try {
119 FileChannel channel = new FileOutputStream(fileName).getChannel();
120 channel.write(ByteBuffer.wrap("useFileChannel".getBytes()));
121 } catch (IOException e) {
122 e.printStackTrace();
123 } finally {
124 if(fileChannel!=null) {
125 try {
126 fileChannel.close();
127 } catch (IOException e) {
128 e.printStackTrace();
129 }
130 }
131 }
132 }
133
134
135
136 使用MappedByteBuffer写文件,速度快,OS级别内存映射
137
138
139 public static void useMappedByteBuffer(String fileName){
140
141 RandomAccessFile randomAccessFile = null;
142
143 try {
144 randomAccessFile = new RandomAccessFile(fileName, "rw");
145 FileChannel fileChannel = randomAccessFile.getChannel();
146
147
148 String content = "useMappedByteBuffer";
149
150 MappedByteBuffer mappedByteBuffer = fileChannel.map(FileChannel.MapMode.READ_WRITE, 0, content.getBytes().length);
151
152 mappedByteBuffer.put(content.getBytes()); //mappedByteBuffer大小不能小于content的字节数
153
154
155 } catch (IOException e) {
156 e.printStackTrace();
157 }finally {
158 if(randomAccessFile!=null) {
159 try {
160 randomAccessFile.close();
161 } catch (IOException e) {
162 e.printStackTrace();
163 }
164 }
165 }
166 }
若转载请注明出处!若有疑问,请回复交流!