zoukankan      html  css  js  c++  java
  • java读写磁盘文件

    参考:
    https://blog.csdn.net/qq_30141957/article/details/80049128

    https://blog.csdn.net/liuhenghui5201/article/details/8279557

    https://blog.csdn.net/lykangjia/article/details/70159619

    https://blog.csdn.net/Chianz632/article/details/79946851

    https://www.runoob.com/java/java-files-io.html

    https://www.cnblogs.com/lianghui66/p/3303546.html

    一、java的IO流

    java中的IO流可分为字节流和字符流。其中有4个文件流,4个缓冲流,2个转换流,2个打印流,2个序列化流,2个数据流。

    文件流

    FileInputStream            //字节输入流
    FileOutPutStream           //字节输出流
    FileReader                 //字符输入流
    FileWriter                 //字符输出流
    

    缓冲流

    BufferedInputStream        //字节输入缓冲流
    BufferedOutputStream       //字节输出缓冲流
    BufferedReader             //字符输入缓冲流
    BufferedWriter             //字符输出缓冲流
    

    BufferedReader 由Reader类扩展而来,提供通用的缓冲方式文本读取,readLine读取一个文本行,

    从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取。

    BufferedWriter 由Writer 类扩展而来,提供通用的缓冲方式文本写入, newLine使用平台自己的行分隔符,

    将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。

    序列化流

    ObjectInputStream          
    ObjectOutputStream
    

    转换流(字符流)将字节流转换为字符流

    InputStreamReader
    OutputStreamWriter
    

    数据流

    DataInputStream
    DataOutputStream
    

    打印流

    PrintWriter
    PrintStream
    

    二、使用示例

    1、使用FileWriter和BufferedWriter写入字符串到磁盘中

    	/**
    	 * 写入磁盘,并保存在磁盘中
    	 */
    	public static void writeToFile() {
    		String content = "测试写入文件";
    		File file = new File("H:\workplaces\eclipse_programs\DataStructures\testWrite.txt");
    		try {
    			//创建字符输出流类对象和已存在的文件相关联;文件不存在的话,并创建;true表示从结尾续写,false表示覆盖重写
    			FileWriter fw = new FileWriter(file,false);
    			BufferedWriter bw = new BufferedWriter(fw);
    			//写入字符串内容
    			bw.write(content);
    			//关闭流
    			bw.close();
    			fw.close();
    			System.out.println("测试写入成功");
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    

    2、使用FileInputStream、InputStreamReader、BufferedReader从磁盘文件中读取内容

    	/**
    	 * 从磁盘文件中读取内容
    	 * @return
    	 * @throws IOException 
    	 */
    	public static void readFromFile(File file) {
    		if(file.isFile() && file.exists()) {
    			try {
    				//FileInputStream用于从文件读取数据,读取文件成字节流
    				FileInputStream fs = new FileInputStream(file);
    				//使用InputStream从文件里读取数据,将字节流转换为字符流.
    				InputStreamReader isr = new InputStreamReader(fs);
    				//从字符输入流中读取文本,缓冲各个字符
    				BufferedReader br = new BufferedReader(isr);
    				
    				StringBuffer sb = new StringBuffer();
    				String text = null;
    				while((text = br.readLine()) != null) {
    					//将读取到的文本存入stringbuffer中
    					sb.append(text);
    				}
    				System.out.println("读取结果:" + sb.toString());
    				
    			} catch (Exception e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    		}
    	}
    

    3、使用FileOutputStream 和 OutputStreamWriter写入文件

    	/**
    	 * 使用FileOutputStream 和 OutputStreamWriter写入文件
    	 */
    	public static void writeToFile2() {
    		String content = "测试写入文件2";
    		File file = new File("H:\workplaces\eclipse_programs\DataStructures\testWrite2.txt");
    		try {
    			//字节输入流
    			FileOutputStream fs = new FileOutputStream(file);
    			//将字节流转换为字符流
    			OutputStreamWriter os = new OutputStreamWriter(fs);
    			os.write(content);
    			os.close();
    			fs.close();
    			System.out.println("成功写入文件2");
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    
  • 相关阅读:
    hdu 4504 dp问题 转化能力不够 对状态的转移也是不够
    BZOJ_2594_[Wc2006]水管局长数据加强版_LCT
    BZOJ_4530_[Bjoi2014]大融合_LCT
    BZOJ_3669_[Noi2014]魔法森林_LCT
    BZOJ_1180_[CROATIAN2009]OTOCI_LCT
    BZOJ_2631_tree_LCT
    BZOJ_3282_Tree_LCT
    BZOJ_2049_[Sdoi2008]Cave 洞穴勘测_LCT
    BZOJ_2622_[2012国家集训队测试]深入虎穴_最短路
    BZOJ_3653_谈笑风生_树状数组
  • 原文地址:https://www.cnblogs.com/flypig666/p/13379832.html
Copyright © 2011-2022 走看看