java文件读写

读文件

//@1 创建File对象,关联某路径
		File f = new File("/home/liang/桌面/student.txt");
		
		//@2 创建文件流 (字节流)
		InputStream ins = new FileInputStream(f);
		
		//@3 继续封装,生成字符流(文本)
			//在内部,自动将字节----编码-----》字符
		InputStreamReader rd = new InputStreamReader(ins,"utf-8");
		
		//@4 读!
		//逐个字符,读取。
		int c = rd.read();//Reads a single character.
		System.out.println((char)c);
		
		System.out.println((char)rd.read());
		System.out.println((char)rd.read());
		System.out.println((char)rd.read());
		System.out.println((char)rd.read());
		System.out.println((char)rd.read());
		rd.close();

 InputStream in = new FileInputStream(new File("/home/liang/桌面/student.txt"));
        InputStreamReader input = new InputStreamReader(in);

        char[] ch = new char[100];
        int n = 0;

        //input.read(ch)将读取的内容写进 ch字符数组中并返回一个整数这个整数表示一次读取字符串的长度
        while ((n = input.read(ch)) != -1) {

            System.out.print(n);
            // new String()  可以将字符数组和字节数组 转化成字符串
            System.out.print(new String(ch,0,n));
        }

读文件最完美的形式

//@1 创建File对象,关联某路径
		File f = new File("/home/liang/桌面/student.txt");
		
		//@2 创建文件流 (字节流)
		InputStream ins = new FileInputStream(f);
		
		//@3 继续封装,生成字符流(文本)
			//在内部,自动将字节----编码-----》字符
		InputStreamReader rd = new InputStreamReader(ins,"utf-8");
		
		//@4 继续封装,得到缓存字符流
			//多个字符缓存----》字符串
		BufferedReader br = new BufferedReader(rd);
		String str = null;
		//@4 读!br.readLine()读一整行
		while((str =br.readLine())!=null) {
			System.out.println(s);
		}
		
		//关闭
		br.close();
		rd.close();
		ins.close();

写文件

//@1 创建File对象,关联某路径
		File f = new File("C:\\Users\\qx\\Desktop\\bbb.txt");
		if(!f.exists()) {
			f.createNewFile();
		}
		
		//@2 创建文件流 (字节流)
			//默认将原内容清除,从头写。
			//true 追加模式,避免清空。
		OutputStream ins = new FileOutputStream(f,true);
		
		//单个字节写入“我”
		//-26,-120,-111
		ins.write(-26);//Writes byte to this output stream,int---》byte
		ins.write(-120);
		ins.write(-111);
		
		//一次写入多个字节
		ins.write("我".getBytes("utf-8"));//默认gbk
		
		ins.write('\n');//换行为什么可以直接写成字符的形式?
		
		ins.write("我爱中华".getBytes("utf8"));//默认gbk
		
		//以上出现乱码,在同一个文件中,我们写入了两种编码格式的字节序列;
		//统一utf-8
		
		ins.write('a');
		ins.write('b');
		ins.write('c');
		ins.write('d');
		ins.close();
		
		System.out.println("/---------------------");
		
		//换行为什么可以直接写成字符的形式?
		byte[] ba = "\n".getBytes("utf-8");
		System.out.println(Arrays.toString(ba));
		
		byte by = '\n';
		System.out.println(by);
		
		// 原因:\n utf-8编码结果就是一个字节,并且与char本身的值一样。
		
		//不单换行符,所有的英文字符、符号,utf-8中都是一个字节,都与char值一致。

//@1 创建File对象,关联某路径
		File f = new File("/home/liang/桌面/sss.txt");
		
		//@2 创建文件流 (字节流)
			//默认将原内容清除,从头写。
			//true 追加模式,避免清空。
		OutputStream os = new FileOutputStream(f,true);
		
		//@3 封装字节流,得到字符流
			//逐个字符写入
			//内部完成 字符 ---编码---》字节序列  转换
		OutputStreamWriter wr = new OutputStreamWriter(os);//默认gbk
		
		//@4 写!!
		wr.write('我');//Writes a single character.
		wr.write(0x7569);//0x7569在unicode码表中,对应的字符
		wr.write('\n');
		wr.write("我爱河南");
		
		wr.close();
		os.close();

写文件最完美形式

//最简洁
		PrintWriter p = new PrintWriter("C:\\Users\\qx\\Desktop\\悯农.txt");
		
		p.println("锄禾日当午");
		p.println("汗滴禾下土");
		
		p.close();
		
		
		//PrintWriter 如何设置追加模式呢?
		File f = new File("C:\\Users\\qx\\Desktop\\bbb.txt");
		OutputStream os = new FileOutputStream(f,true);//借助字节流,才能追加
		PrintWriter p1 = new PrintWriter(os);
		p1.println("锄禾日当午");
		p1.println("汗滴禾下土");
		
		p1.close();
		os.close();
		
		//PrintWriter 如何设置编码?
		OutputStreamWriter wr = new OutputStreamWriter(os,"utf-8");//借助基础Writer设置编码
		PrintWriter p2 = new PrintWriter(wr);
		p2.println("锄禾日当午");
		p2.println("汗滴禾下土");
		
		p2.close();
		os.close();

文件拷贝

 FileChannel in = new FileInputStream(new File("/home/liang/音乐/何山 - 何山-满城花开.mp3")).getChannel();
 FileChannel out = new FileOutputStream(new File("/home/liang/桌面/sss.mp3")).getChannel();
 out.transferFrom(in,0,in.size());
 //速度最快
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值