Java小知识总结:
1. URLconnection 2.UUID 3.添加数据到文件结尾 4.内部类的调用 5. 读取txt文件 6. 复制文件>60M
一、URLconnection:代表应用程序和URL之间的通讯连接。此类可以用于读取和写入此URL引用的资源。
使用方法:
1. 通过URL调用openConnection方法创建对象
2. 处理设置参数和一般请求属性。
3. 是用connect方法建立到远程对象的实际连接
4. 远程对象变为可用。投资端和内容变为可访问
例:访问网站的资源大小
URL url = new URL("http://www.baidu.com/");
URLConnection urlConn = url.openConnection();
urlConn.connect();
System.out.println("网站一共包括"+urlConn.getContentLength()+"字节");
二、UUID:表示通用唯一标识符(UUID)类,UUID表示一个128位的值
例:取得32位的唯一标识:
byte[] name = new byte[111];
System.out.println("伪随机获取UUID: "+UUID.randomUUID().toString());
System.out.println("根据指定字节数获取UUID:"+UUID.nameUUIDFromBytes(name));
System.out.println("指定省去‘-’: "+UUID.randomUUID().toString().replaceAll("-", ""));
三、添加数据到文件的末尾
public static void main(String[] args) {
BufferedWriter out = null;
try
{
out = new BufferedWriter(new FileWriter("D:\\file.txt", true));//这里的true是将数据写入到文件末尾,文件没有将会被创建
for(int i=0;i<100;i++){//像文件中写入100次,'String'
out.write("String");
}
} catch (IOException e) {
e.printStackTrace();
} finally
{
System.out.println("写入成功!");
if (out != null) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
四、内部类的调用
1.创建内部类:
public class ClassA {
public String test(){
return "我是A类";
}
class ClassB{
public void test(){
System.out.println("我是内部类中的方法");
}
}
}
2.调用:
public class OutPutInnerClass extends ClassA.ClassB{
/*
* 继承内部类
* 当某个类继承内部类时,必须给这个类一个带参数的构造方法,并且该构造方法的参数为需要继承内部类的外部类的引用
* 同时在构造方法中使用外部类对象.super();
*/
public OutPutInnerClass(ClassA a){
a.super();
}
public static void main(String[] args){
ClassA a=new ClassA();
OutPutInnerClass oic=new OutPutInnerClass(a);
oic.test();
匿名内部类的试用
showInfo(new ClassA(){});
}
public static void showInfo(ClassA a){
System.out.println("调用匿名内部类:"+a.test());
}
}
五、读取txt文件中的内容
public static void main(String[] args) {
FileReader fr;
try {
fr = new FileReader(new File("D:\\file.txt"));
// 初始化输出流
BufferedReader br = new BufferedReader(fr);// 初始化输出字符流
String n = null;
while ((n = br.readLine()) != null) {// 这里读取一行,是按回车算的
System.out.println(n);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
六、复制大于60M的文件
/**
* @param args
* 流FileInputStream和FileOutputStream
* 复制大于60m的文件,因为byte[]最大存储64m的文件,所以要分着读写
*/
public static void main(String[] args) {
try {
File inFile = new File("H:\\Users/YANTAI_DB_20141202.DMP");
File outFile = new File("H:\\ddd.dmp");
// 最大的流为60Mb,当文件的容量大于60Mb的时候便分开流
final int MAX_BYTE = 61440000;
long streamTotal = 0; // 接受流的容量
int streamNum = 0; // 流需要分开的数量
int leave = 0; // 文件剩下的字符数
byte[] inOutb; // byte数组接受文件的数据
// 创建流文件读入与写出类
FileInputStream inStream = new FileInputStream(inFile);
FileOutputStream outStream = new FileOutputStream(outFile);
// 通过available方法取得流的最大字符数
streamTotal = inStream.available();
// 取得流文件需要分开的数量
streamNum = (int) Math.floor(streamTotal / MAX_BYTE);
// 分开文件之后,剩余的数量
leave = (int) streamTotal % MAX_BYTE;
// 文件的容量大于60Mb时进入循环
if (streamNum > 0) {
for (int i = 0; i < streamNum; ++i) {
inOutb = new byte[MAX_BYTE];
// 读入流,保存在byte数组
inStream.read(inOutb, 0, MAX_BYTE);
outStream.write(inOutb); // 写出流
outStream.flush(); // 更新写出的结果
}
}
// 写出剩下的流数据
inOutb = new byte[leave];
inStream.read(inOutb, 0, leave);
outStream.write(inOutb);
outStream.flush();
inStream.close();
outStream.close();
System.out.println("复制完成");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}