Java写入文本文件
- FileWriter
FileWriter直接写入文件,并且应该仅在写入数较少时使用。
/** * Use FileWriter when number of write operations are less * @param data */ private static void writeUsingFileWriter(String data) { File file = new File("/Users/pankaj/FileWriter.txt"); FileWriter fr = null; try { fr = new FileWriter(file); fr.write(data); } catch (IOException e) { e.printStackTrace(); }finally{ //close resources try { fr.close(); } catch (IOException e) { e.printStackTrace(); } } }
- BufferedWriter
当写操作次数较多时,应使用BufferedWriter。
/** * Use BufferedWriter when number of write operations are more * It uses internal buffer to reduce real IO operations and saves time * @param data * @param noOfLines */ private static void writeUsingBufferedWriter(String data, int noOfLines) { File file = new File("/Users/pankaj/BufferedWriter.txt"); FileWriter fr = null; BufferedWriter br = null; String dataWithNewLine=data+System.getProperty("line.separator"); try{ fr = new FileWriter(file); br = new BufferedWriter(fr); for(int i = noOfLines; i>0; i--){ br.write(dataWithNewLine); } } catch (IOException e) { e.printStackTrace(); }finally{ try { br.close(); fr.close(); } catch (IOException e) { e.printStackTrace(); } } }
- FileOutputStream
FileWriter和BufferedWriter用于将文本写入文件,但是当需要将原始流数据写入文件时,应该使用FileOutputStream写入文件。
/** * Use Streams when you are dealing with raw data * @param data */ private static void writeUsingOutputStream(String data) { OutputStream os = null; try { os = new FileOutputStream(new File("/Users/pankaj/os.txt")); os.write(data.getBytes(), 0, data.length()); } catch (IOException e) { e.printStackTrace(); }finally{ try { os.close(); } catch (IOException e) { e.printStackTrace(); } } }
Files
Java 7引入了 Files utility class,我们可以使用它的写入函数写入文件,在内部它使用OutputStream将字节数组写入文件。
/** * Use Files class from Java 1.7 to write files, internally uses OutputStream * @param data */ private static void writeUsingFiles(String data) { try { Files.write(Paths.get("/Users/pankaj/files.txt"), data.getBytes()); } catch (IOException e) { e.printStackTrace(); } }
浙公网安备 33010602011771号