/*//创建一个新文件
public static void main(String[] args) {
File file=new File("D:\\hello.txt");
try {
file.createNewFile();
} catch (IOException e) { e.printStackTrace();
}
}*/ /*//File类的两个常量
public static void main(String[] args) {
System.out.println(File.separator);//结果: \
System.out.println(File.pathSeparator);//结果: :
}*/ /*//删除一个文件
public static void main(String[] args) {
String fileName="D:"+File.separator+"hello.txt";
File file=new File(fileName);
if(file.exists()){
file.delete();
}else {
System.out.println("文件不存在!");
}
}*/ /*//创建一个文件夹
public static void main(String[] args) {
String fileName="D:"+File.separator+"hello";
File file=new File(fileName);
file.mkdirs();
}*/ /*//使用listFiles列出指定目录的全部文件
//* listFiles输出的是完整路径
public static void main(String[] args) {
String fileName="D:"+File.separator;
File file=new File(fileName);
File[] str=file.listFiles();
for(int i=0;i<str.length;i++){
System.out.println(str[i]);
}
}*/ /*使用isDirectory判断一个指定的路径是否为目录*/
/*public static void main(String[] args) {
String fileName="D:"+File.separator;
File file=new File(fileName);
if(file.isDirectory())
System.out.println("yes");
else {
System.out.println("no");
}
}*/ /*列出指定目录的全部内容*/
/*public static void main(String[] args) {
String fileName="D:"+File.separator;
File file=new File(fileName);
print(file);
}
public static void print(File f){
if(f!=null){
if(f.isDirectory()){
File[] fileArray=f.listFiles();
if(fileArray!=null){
for(int i=0;i<fileArray.length;i++){
print(fileArray[i]);//递归调用
}
}
}else {
System.out.println(f);
}
}
}*/ /*使用RandomAccessFile写入文件
public static void main(String[] args) throws IOException {
String fileName="D:"+File.separator+"hello.txt";
File file=new File(fileName);
RandomAccessFile randomAccessFile=new RandomAccessFile(file, "rw");
randomAccessFile.writeBytes("1234567890");
randomAccessFile.writeInt(42);
randomAccessFile.writeBoolean(true);
randomAccessFile.writeChar(88);
randomAccessFile.writeDouble(12.678);
randomAccessFile.writeFloat(23.5f);
randomAccessFile.close();
}//如果你此时打开hello。txt查看的话,会发现那是乱码。
*/
/*字节流
* 向文件中写入字符串
public static void main(String[] args) throws IOException {
String fileName="D:"+File.separator+"hello.txt";
File file=new File(fileName);
OutputStream outputStream=new FileOutputStream(file);
String string="Hello";
byte[] bs=string.getBytes();
outputStream.write(bs);
outputStream.close();
}*/ /**
* 字节流
* 向文件中一个字节一个字节的写入字符串
* @throws IOException
* *//*
public static void main(String[] args) throws IOException {
String fileName="D:"+File.separator+"hello.txt";
File file=new File(fileName);
OutputStream outputStream=new FileOutputStream(file);
String string="Hello GG";
byte[] bs=string.getBytes();
for(int i=0;i<bs.length;i++){
outputStream.write(bs[i]);
}
outputStream.close();
}*/ /**
* 字节流
* 向文件中追加新内容:
* @throws IOException
* */
/*public static void main(String[] args) throws IOException {
String fileName="D:"+File.separator+"hello.txt";
File file=new File(fileName);
OutputStream outputStream=new FileOutputStream(file,true);
String string="Hello MM";
//String str="\r\nRollen"; 可以换行
byte[] bs=string.getBytes();
for(int i=0;i<bs.length;i++){
outputStream.write(bs[i]);
}
outputStream.close();
}*/ /**
* 字节流
* 读文件内容
* @throws IOException
* */
/*public static void main(String[] args) throws IOException {
String fileName="D:"+File.separator+"hello.txt";
File file=new File(fileName);
InputStream inputStream=new FileInputStream(file);
//byte[] bs=new byte[1024];//预先申请了一个指定大小的空间
byte[] bs=new byte[(int) file.length()];
inputStream.read(bs);
System.out.println("文件长度为:"+file.length());
inputStream.close();
System.out.println(new String(bs));
}*/ /**
* 字节流
*读文件
* @throws IOException
* */
/*public static void main(String[] args) throws IOException {
String fileName="D:"+File.separator+"hello.txt";
File file=new File(fileName);
InputStream inputStream=new FileInputStream(file);
byte[] bs=new byte[1024];
int count=0;
int temp=0;
while((temp=inputStream.read())!=(-1)){//当读到文件末尾的时候会返回-1.正常情况下是不会返回-1的
bs[count++]=(byte) temp;
}
inputStream.close();
System.out.println(new String(bs));
}*/ /**
* 字符流
* 写入数据
* @throws IOException
* */
/*public static void main(String[] args) throws IOException {
String fileName="D:"+File.separator+"hello.txt";
File file=new File(fileName);
Writer out=new FileWriter(file);
String string="朋友";
out.write(string);
out.close();
}*/ /**
* 字符流
* 从文件中读出内容
* @throws IOException
*采用循环读取的方式,因为我们有时候不知道文件到底有多大。
* */
/*public static void main(String[] args) throws IOException {
String fileName="D:"+File.separator+"hello.txt";
File file=new File(fileName);
char[] ch=new char[100];
Reader reader=new FileReader(file);
int temp=0;
int count=0;
while((temp=reader.read())!=(-1)){
ch[count++]=(char) temp;
}
reader.close();
System.out.println(new String(ch, 0, count));
}*/

/**
* 将字节输出流转化为字符输出流
* @throws IOException
* */
/*public static void main(String[] args) throws IOException {
String fileName="D:"+File.separator+"hello.txt";
File file=new File(fileName);
Writer out=new OutputStreamWriter(new FileOutputStream(file));
out.write("MM");
out.close();
}*/

/**
* 将字节输入流变为字符输入流
* @throws IOException
* */
/*public static void main(String[] args) throws IOException {
String fileName="D:"+File.separator+"hello.txt";
File file=new File(fileName);
Reader reader=new InputStreamReader(new FileInputStream(file));
char[] cs=new char[100];
int len=reader.read(cs);
System.out.println(new String(cs, 0, len));
reader.close();
}*/

/**
* 使用内容操作流将一个大写字母转化为小写字母
* @throws IOException
* 内容操作流一般用来生成一些临时信息的,这样可以避免删除的麻烦。
* */
/*public static void main(String[] args) throws IOException {
String str="ADFGHJKLUYTG";
ByteArrayInputStream inputStream=new ByteArrayInputStream(str.getBytes());
ByteArrayOutputStream outputStream=new ByteArrayOutputStream();
int temp=0;
while((temp=inputStream.read())!=(-1)){
char ch=(char) temp;
outputStream.write(Character.toLowerCase(ch));
}
String outStr= outputStream.toString();
inputStream.close();
outputStream.close();
System.out.println(outStr);
}*/

1、字节流和字符流的区别:

字节流在操作的时候本身是不会用到缓冲区的,是文件本身的直接操作的,但是字符流在操作的 时候,是会用到缓冲区的,是通过缓冲区来操作文件的。

使用字节流好还是字符流好呢?

答案是字节流。首先因为硬盘上的所有文件都是以字节的形式进行传输或者保存的,包括图片等内容。但是字符只是在内存中才会形成的,所以在开发中,字节流使用广泛。

2、文件的复制:

方法一:DOS下就有一个文件复制功能

方法二:用程序

/**
* 文件的复制
* @throws IOException
* 思路:从一个文件中读取内容,边读边写入另一个文件。
* */
public static void main(String[] args) throws IOException {
String helloFileName="D:"+File.separator+"hello.txt";
String rollenFileName="D:"+File.separator+"rollen.txt";
File file1=new File(helloFileName);
File file2=new File(rollenFileName);
if(!file1.exists()){
System.out.println("被复制的文件不存在!");
System.out.println(1);
}
InputStream inputStream=new FileInputStream(file1);
OutputStream outputStream=new FileOutputStream(file2);
if(inputStream!=null&&outputStream!=null){
int temp=0;
while((temp=inputStream.read())!=(-1)){
outputStream.write(temp);
}
}
inputStream.close();
outputStream.close();
}

3、管道流

管道流主要用以进行两个线程之间的通信。

PipedOutputStream 管道输出流

PipedInputStream 管道输入流

/*消息发送类*/
public class Send implements Runnable{
private PipedOutputStream out=null;
public Send() {
out=new PipedOutputStream();
}
public PipedOutputStream getOut(){
return this.out;
}
@Override
public void run() {
String message="hello MM";
try {
out.write(message.getBytes());
} catch (IOException e) {
e.printStackTrace();
}
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} /*接受消息类*/
public class Recive implements Runnable{
private PipedInputStream input=null;
public Recive() {
input=new PipedInputStream();
}
public PipedInputStream getInput(){
return this.input;
}
@Override
public void run() {
byte[] bs=new byte[1000];
int len=0;
try {
len=this.input.read(bs);
} catch (IOException e) {
e.printStackTrace();
}
try {
input.close();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("接收的内容是:"+(new String(bs, 0, len)));
} } /*测试类*/
public static void main(String[] args) {
Send send=new Send();
Recive recive=new Recive();
try {
send.getOut().connect(recive.getInput());//管道连接
} catch (IOException e) {
e.printStackTrace();
}
new Thread(send).start();
new Thread(recive).start();
}
}

4、打印流

/* 使用PrintStream进行输出*/
/*public static void main(String[] args) throws IOException {
PrintStream printStream=new PrintStream(new FileOutputStream(new File("D:"+File.separator+"hello.txt")));
printStream.print(true);
printStream.print("GG");
printStream.close();
}*/ /*使用PrintStream进行输出
* 并进行格式化*/
/*public static void main(String[] args) throws IOException {
PrintStream printStream=new PrintStream(new FileOutputStream(new File("D:"+File.separator+"hello.txt")));
String name="GG";
int age=26;
printStream.printf("姓名:%s;年龄:%d!",name,age);
printStream.close();
}*/ /*使用OutputStream向屏幕上输出内容*/
public static void main(String[] args) {
OutputStream out=System.out;
try {
out.write("MM".getBytes());
} catch (IOException e) {
e.printStackTrace();
}
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}

  

最新文章

  1. MySQL 博客文章目录(2016-08-20更新)
  2. EF 二级缓存 EFSecondLevelCache
  3. Web3DGame之路,Babylonjs 和TypeScript学习笔记(二)
  4. mac攻略(七) -- 环境变量PATH分析
  5. SharePoint 服务器端对象模型操作用户组(创建/添加/删除)
  6. Spring注解@Scheduled定时任务
  7. C#字符补位
  8. nginx学习笔记1
  9. UVALive 4255 Guess
  10. POJ 2002 Squares 哈希
  11. [PHP学习日志]简单Session的使用
  12. ef code first 您没有所需权限
  13. Tp框架获取客户端IP地址
  14. git使用教程之git基础
  15. MySQL下载安装配置和Navicat for MySQL的安装配置
  16. .net core 基于IIS发布
  17. 连接Linux服务器操作Oracle数据库
  18. 石子合并 区间dp模板
  19. Windows上搭建Flume运行环境
  20. js 和springboot内存图

热门文章

  1. pg_bulkload使用记录
  2. iOS 阶段学习第六天笔记(数组)
  3. losetup命令
  4. windows下类似Linux下的grep命令
  5. 《Unity 3D游戏客户端基础框架》消息系统
  6. ios Label TextFile 文本来回滚动 包括好用的三方
  7. Swift 开源项目精选
  8. CentOS6 mail邮件服务配置
  9. 网站部署,网站要求需要支持mb_substring
  10. Codeforces 280C Game on tree【概率DP】