一、Java常用包
1、java.lang. Java编程的基础包 (String,StringBuffer,StringBuild,Math、Object、线程,异常等类)
2、java.util. Java工具包(日期,数组,集合,枚举,各种工具类)
3、java.io. 该包通过文件系统、数据流和序列化提供系统的输入与输出
4、java.net. 跟网络编程有关的包(socket网络编程包)
5、java.sql. 放置的是跟数据库进行交互的类
6、java.awt.和 java.swing. 这是Java提供的图形界面包
7、java.text. 放置的是自然语言无关的方式来处理文本、日期、数字和消息的类和接口
8、javax. 其他商业公司的扩展包
二、字节流
这种流都是以字节为单位进行数据处理
所有的字节流都继承至:InputStream、OutputStream
字节流,绝大多数情况都是用来处理“二进制文件”,当然也可以用来处理“文本文件”
计算机中,只认识“二进制”,不管是“二进制文件”,还是“文本文件”。它们的区别只在于表现形式不一样而已
2.1 低级字节流
1、专门用来读取文件的FileInputStream,FileOutputStream
2、专门用来读取内存空间的字节数组的 ByteArrayInputStream, ByteArrayOuntputStream
3、专门用来读取其他线程传输过来的字节流 PipedInputStream 和PipedOutputStream
2.1.1 文件输入流 FileInputStream (*)
FileInputStream 是文件输入流,该流属于 低级字节流 因为它直接面向文件
FileInputStream的使用
使用场景:文件上传
package com.woniuxy.java18.study.low;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Arrays;
/**
* 文件输入流(低级流) 直接操作文件
*
* @author Administrator
*
*/
public class FileInputStreamStudy {
public static void main(String[] args) {
// TODO Auto-generated method stub
// firstInputMethod();
secondInputMethod();
}
/**
* 一批一批的读
* 相比于第一种读取 ,有一定的性能提升
*/
private static void secondInputMethod() {
// TODO Auto-generated method stub
// 定义文件的路径,并交给文件对象
String path = "D:\\movie\\japan\\db\\jz.txt";
File file = new File(path);
// 定义一个文件输入流
FileInputStream fis = null;
try {
fis = new FileInputStream(file);
//读取文件的内容
byte[] data = new byte[1024];
while(fis.read(data) != -1) {
//输出读取回来的内容
System.out.println(Arrays.toString(data));
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally {
try {
fis.close();//关闭流
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/**
* 一个字节一个字节的读
*/
private static void firstInputMethod() {
// TODO Auto-generated method stub
// 定义文件的路径,并交给文件对象
String path = "D:\\movie\\japan\\db\\jz.txt";
File file = new File(path);
// 定义一个文件输入流
FileInputStream fis = null;
try {
// 给流定义 实例
fis = new FileInputStream(file);
// 通过流,读取文件的内容到内存中来
// 代表读取的内容
int content = 0;
while ((content = fis.read()) != -1) {
// 输出(0-255)的值
System.out.println(content);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
// 关闭流
try {
fis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
2.1.2 文件输出流FileOutputStream (*)
使用场景:文件下载
当然它也是低级字节流,它的作用是:将程序内部的资源 写入到外部文件中去
FileOutputStream的用法
package com.woniuxy.java18.study.low;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileOutPutStreamStudy {
public static void main(String[] args) {
// TODO Auto-generated method stub
// firstWriteMethod();
secondWriteMethod();
}
/**
* 一批一批的写
*/
private static void secondWriteMethod() {
// TODO Auto-generated method stub
String path = "D:\\movie\\japan\\dj\\xzm.txt";
File file = new File(path);
//定义输出流
FileOutputStream fos = null;
try {
//存不存在
if(!file.exists()) {
file.createNewFile();
}
//实例化输出流
fos = new FileOutputStream(file);
String str = "你老了,可以退休,因为没人看了!!!!!";
byte[] data = str.getBytes("UTF-8");
//向文件中一次型写入内容
fos.write(data);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally {
try {
fos.close();//关闭流
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/**
* 一个字节一个字节的写
*/
private static void firstWriteMethod() {
// TODO Auto-generated method stub
String path = "D:\\movie\\japan\\dj\\bdy.txt";
File file = new File(path);
//定义输出流
FileOutputStream fos = null;
try {
//存不存在
if(!file.exists()) {
file.createNewFile();
}
//实例化输出流
fos = new FileOutputStream(file);
String str = "这是今年最好的一部电影!!!";
byte[] data = str.getBytes("UTF-8");
for (byte c : data) {
//操作流
fos.write(c);
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally {
try {
fos.close();//关闭流
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}