JAVA笔记11__File类/File类作业/字节输出流、输入流/字符输出流、输入流/文件复制/转换流
/**
* File类:文件的创建、删除、重命名、得到路径、创建时间等,是唯一与文件本身有关的操作类
*/
public class Main { public static void main(String[] args) {
//File.separator 表示分隔符
File f1 = new File("c:" + File.separator + "fuck" + File.separator + "javaTest1.txt");
String s1 = File.pathSeparator; //路径分隔符
System.out.println(File.separator + " " + s1); boolean b1 = f1.exists(); //文件是否存在
System.out.println(b1);
if (!b1) {
try {
boolean bt1 = f1.createNewFile(); //创建文件
System.out.println(bt1);
} catch (IOException e) {
e.printStackTrace();
}
}
System.out.println(f1.delete()); //删除文件 //System.out.println(""); 快捷键:打sout,然后中按Tab键
System.out.println(f1.getParent()); //得到文件的上一级路径 System.out.println(f1.isDirectory()); //判断是否是目录 File f2 = new File("c:" + File.separator + "fuck" + File.separator);
String[] fname = f2.list(); //列出文件夹中的所有文件名
for(String i:fname) System.out.println(i); File[] files = f2.listFiles(); //列出文件中的所有文件,以file数组返回
for(File i:files) System.out.println(i.getName()+" "+i.length()); File f3 = new File("c:\\fuck\\JavaTest1");
System.out.println(f3.mkdir()); //创建文件夹
f3.delete(); System.out.println(f3.renameTo(new File("c:\\fuck\\JavaTest2"))); //重命名
}
}
/**
* 在某个目录中找到某个扩展名的所有文件
*/
public class Main {
private static int num = 0;
public static void findFile(File f,String extName){
if(f==null)
return;
else{
if(f.isDirectory()){
File[] fs = f.listFiles();
if(fs!=null){
for(File i:fs)
findFile(i,extName);
}
}else{
String path = f.getPath().toLowerCase();
if(path.endsWith(extName)){
System.out.println(f.getPath());
++num;
}
}
}
}
public static void main(String[] args) {
File f = new File("c:\\fuck\\");
String extName = ".cpp";
findFile(f,extName);
System.out.println(num);
}
}
/**
* IO流:输入输出流
* 流:一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。
* 流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。
* 根据处理数据类型的不同分为:1.字符流 2.字节流
* 根据数据流向不同分为:1.输入流(程序从外部读取) 2.输出流(程序将数据写到外部)
*
* OutputStream类:接受输出字节并将这些字节发送到某个接收器
*/
public class Main { public static void main(String[] args) {
//write1();
write2();
System.out.println("finished.");
} /**
* 字节输出流方式一:每次输出一个字节
*/
public static void write1(){
OutputStream out = null;
try {
out = new FileOutputStream("c:\\fuck\\javaTest1.txt");
String info = "helloIO";
byte[] bs = info.getBytes();
for(int i=0;i<bs.length;++i)
out.write(bs[i]); } catch (FileNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
} finally {
try {
out.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
} /**
* 字节输出流方式二:每次输出指定大小字节
*/
public static void write2(){
OutputStream out = null;
try {
out = new FileOutputStream("c:\\fuck\\javaTest1.txt",true); //参数true表示追加输出
String info = "hello fish7";
byte[] bs = info.getBytes();
//out.write(bs);
out.write(bs,0,5); } catch (FileNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
} finally {
try {
out.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
}
public class Main { public static void main(String[] args) {
//read1();
// read2();
read3();
System.out.println("finished.");
} /**
* 字节输入流的读取方式一:每次读取一个字节
*/
public static void read1(){
InputStream in = null;
try {
in = new FileInputStream("c:\\fuck\\javaTest1.txt");
int bs = -1; //定义一个字节,-1表示没有数据
while((bs = in.read())!=-1){
System.out.print((char)bs);
}
System.out.println("");
} catch (FileNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
} finally{
try {
in.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
} /**
* 字节输入流的读取方式二:一次性读取所有字节(适合不太大的文件)
*/
public static void read2(){
InputStream in = null;
try {
File f = new File("c:\\fuck\\javaTest1.txt");
in = new FileInputStream(f);
byte[] bs = new byte[(int)f.length()]; //根据文件大小构造字节数组
int len = in.read(bs);
System.out.println(new String(bs));
System.out.println("len = "+len); } catch (FileNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
} finally{
try {
in.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
} /**
* 字节输入流的读取方式三:每次读取指定大小的字节(折中的方法)
*/
public static void read3(){
InputStream in = null;
try {
File f = new File("c:\\fuck\\javaTest1.txt");
in = new FileInputStream(f);
byte[] bs = new byte[5];
int len = -1; //每次读取的实际长度
StringBuilder sb = new StringBuilder();
while((len=in.read(bs))!=-1){
sb.append(new String(bs,0,len));
}
System.out.println(sb); } catch (FileNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
} finally{
try {
in.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
}
/**
* 字符流:底层也是用字节流实现的
*/
public class Main { public static void main(String[] args) {
writer1();
System.out.println("finished.");
} /**
* 字符输出流方式一:以字符数组方式输出
*/
public static void writer1(){
Writer out = null;
try {
File f = new File("c:\\fuck\\javaTest1.txt");
out = new FileWriter(f,true); //true表示追加方式
String info = "good good study, day day up.";
//out.write(info.toCharArray());
out.write(info); } catch (IOException ex) {
ex.printStackTrace();
} finally{
try{
out.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
}
/**
* 字符流:底层也是用字节流实现的
*/
public class Main { public static void main(String[] args) {
//byteReader(); //输出一堆乱码
reader1();
System.out.println("finished.");
} /**
* 字符输入流方式一:使用指定大小的字符数组输入
*/
public static void reader1(){
File f = new File("c:\\fuck\\javaTest1.txt");
try {
Reader in = new FileReader(f);
char[] cs = new char[10];
int len = -1;
StringBuilder sb = new StringBuilder();
while((len=in.read(cs))!=-1){
sb.append(new String(cs,0,len));
}
in.close();
System.out.println(sb); } catch (FileNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
} /**
* 使用字节流读取文本文件
*/
public static void byteReader(){
File f = new File("c:\\fuck\\javaTest1.txt");
try {
InputStream in = new FileInputStream(f);
byte[] bs = new byte[10];
int len = -1;
StringBuilder sb = new StringBuilder();
while((len=in.read(bs))!=-1){
sb.append(new String(bs,0,len));
}
in.close();
System.out.println(sb); } catch (FileNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
/**
* 字符流:底层也是用字节流实现的
* :根据指定的编码,将1个或多个字节转化为java里的unicode字符,然后进行操作
* 字符操作一般用Writer,Reader等,字节操作一般用InputStream,OutputStream以及各种包装类,比如:
* BufferedInputStream和BufferedOutputStream等
* 总结:如果你确认你要处理的流是可打印的字符,那么使用字符流会简单些,如果不确认,那么用字节流总是不会错的。
*/
public class Main { public static void main(String[] args) {
//byteReader(); //输出一堆乱码
reader1();
System.out.println("finished.");
} /**
* 字符输入流方式一:使用指定大小的字符数组输入
*/
public static void reader1(){
File f = new File("c:\\fuck\\javaTest1.txt");
try {
Reader in = new FileReader(f);
char[] cs = new char[10];
int len = -1;
StringBuilder sb = new StringBuilder();
while((len=in.read(cs))!=-1){
sb.append(new String(cs,0,len));
}
in.close();
System.out.println(sb); } catch (FileNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
} /**
* 使用字节流读取文本文件
*/
public static void byteReader(){
File f = new File("c:\\fuck\\javaTest1.txt");
try {
InputStream in = new FileInputStream(f);
byte[] bs = new byte[10];
int len = -1;
StringBuilder sb = new StringBuilder();
while((len=in.read(bs))!=-1){
sb.append(new String(bs,0,len));
}
in.close();
System.out.println(sb); } catch (FileNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
/**
* 指定一个盘符下的文件,把该文件复制到指定的目录下。
*/
public class Main { public static void main(String[] args) {
copyFile("c:\\fuck\\javaTest1.txt","c:\\fuck\\javaTest2.txt");
copyFile("c:\\fuck\\ning.bmp","c:\\fuck\\ning2.txt"); //把.txt改成.bmp就可以看了
System.out.println("finished.");
} public static void copyFile(String src,String des){
File f1 = new File(src);
File f2 = new File(des);
InputStream in = null;
OutputStream out = null;
try {
in = new FileInputStream(f1);
out = new FileOutputStream(f2);
byte[] bs = new byte[105];
int len = -1;
while((len=in.read(bs))!=-1){
out.write(bs,0,len);
} } catch (FileNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
} finally{
try {
in.close();
out.close();
} catch (IOException ex) {
ex.printStackTrace();
}
} }
}
/**
* 转换流:将一个字节流转换为字符流,也可以将一个字符流转换为字节流
* OutputStreamWriter:可以将输出的字符流转换为字节流的输出形式,可使用指定的charset将要写入流
* 中的字符编码成字节。
* InputStreamReader:将输入的字节流转换为字符流输入形式,使用指定的charset读取字节并将其解码为
* 字符。
*/
public class Main { public static void main(String[] args) {
//writer();
reader();
System.out.println("finished.");
} public static void writer(){ //把字符流转成字节流
try {
OutputStream out = new FileOutputStream("c:\\fuck\\javaTest1.txt");
String info = "你好吗abc.";
Writer w1 = new OutputStreamWriter(out); //通过字节输出流构造一个字符输出流
w1.write(info); w1.close();
out.close();
} catch (FileNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
} public static void reader(){ //把字节流转成字符流
try {
InputStream in = new FileInputStream("c:\\fuck\\javaTest1.txt");
Reader r1 = new InputStreamReader(in);
char[] cs = new char[105];
int len = -1;
StringBuilder sb = new StringBuilder();
while((len=r1.read(cs))!=-1){
sb.append(new String(cs,0,len));
}
r1.close();
in.close();
System.out.println(sb); } catch (FileNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
JAVA笔记11__File类/File类作业/字节输出流、输入流/字符输出流、输入流/文件复制/转换流的更多相关文章
- Java基础知识强化之IO流笔记09:File类功能
详见如下: Android(java)学习笔记87:File类使用
- java之io之file类的常用操作
java io 中,file类是必须掌握的.它的常用api用法见实例. package com.westward.io; import java.io.File; import java.io.IOE ...
- Java IO体系之File类浅析
Java IO体系之File类浅析 一.File类介绍 位于java.io下的Java File类以抽象的方式代表文件名和目录路径名.该类主要用于文件和目录的创建.文件的查找和文件的删除等.File对 ...
- Android(java)学习笔记87:File类使用
package cn.itcast_01; import java.io.File; /* * 我们要想实现IO的操作,就必须知道硬盘上文件的表现形式. * 而Java就提供了一个类File供我们使用 ...
- java学习笔记IO之File类
File类总结 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times } p.p2 { margin: 0.0px 0.0px 0.0p ...
- Java学习笔记36(File类)
File类可以对操作系统中的文件进行操作: File类的静态成员变量: package demo; import java.io.File; public class FileDemo { publi ...
- java学习笔记27(File类)
File类: 定义:文件和目录径的抽象表示形式, Java中将路径或者文件封装成File对象 1.File类的静态成员变量 package com.zs.Demo2; import java.io.F ...
- Android(java)学习笔记26:File类的使用
1. File类的使用 package cn.itcast_01; import java.io.File; /* * 我们要想实现IO的操作,就必须知道硬盘上文件的表现形式. * 而Java就提供 ...
- Java基础---IO(二)--File类、Properties类、打印流、序列流(合并流)
第一讲 File类 一.概述 1.File类:文件和目录路径名的抽象表现形式 2.特点: 1)用来将文件或文件夹封装成对象 2)方便于对文件与文件夹的属性信息进行操作 3)File类的实例是不 ...
随机推荐
- 论文解读(SimCLR)《A Simple Framework for Contrastive Learning of Visual Representations》
1 题目 <A Simple Framework for Contrastive Learning of Visual Representations> 作者: Ting Chen, Si ...
- C++ cout格式化输出(输出格式)完全攻略
使用流操作算子 它们都是在头文件 iomanip 中定义的:要使用这些流操纵算子,必须包含该头文件. 表1:C++ 流操纵算子 流操纵算子 作 用 *dec 以十进制形式输出整数 hex 以十六进制 ...
- [Navicat15 试用期过期解决办法]
Navicat15 试用期过期解决办法 第一步:关闭Navicat 第二步: 打开注册表编辑器,win + R, 输入regedit 第三步: 在最上方搜索框输入HKEY_CURRENT_USER\S ...
- java设计模式,工厂,代理模式等
javaEE设计模式: 工厂模式:主要分为三种模式: 定义:在基类中定义创建对象的一个接口,让子类决定实例化哪个类.工厂方法让一个类的实例化延迟到子类中进行. 为什么要使用工厂模式: (1) 解耦 : ...
- swiper-wrapper轮滑组件(多组轮滑界面)间隔无效问题
在多组此种轮滑效果出现时,你需要加两个属性值,即 new Swiper('.swiper-container', { slidesPerView: 3, slidesPerColumn: 2, spa ...
- Jmeter系列(17)- 常用断言之JSON断言
模块分析 Assert JSON Path exists:需要断言的 JSON 表达式 Additionally assert value:如果要根据值去断言,请勾选 Match as regular ...
- Java基础系列(30)- 命令行传参
命令行传参 有时候你希望运行一个程序的时候再传递给它消息.这就要靠传递命令行参数main()函数实现 package method; public class CommandLine { public ...
- Groovy系列(4)- Groovy集合操作
Groovy集合操作 Lists List 字面值 您可以按如下所示创建列表. 请注意,[]是空列表表达式 def list = [5, 6, 7, 8] assert list.get(2) == ...
- 关于web桌面应用的集成解决方案
背景 毫无疑问,面对一个新的项目需求,我们首先想到的就是web. 确实,web太方便了,基于浏览器对OS的适配,我们可以很快速的实现某个需求的页面UI,而无需考虑OS的兼容差异. 再经过jq.boot ...
- 三分钟图解 MVCC,看一遍就懂
前文我们介绍了 InnoDB 存储引擎在事务隔离级别 READ COMMITTED 和 REPEATABLE READ(默认)下会开启一致性非锁定读,简单回顾下:所谓一致性非锁定读就是每行记录可能存在 ...