Java基础(五)(IO流,线程)
来源:互联网 发布:前线seo 编辑:程序博客网 时间:2024/06/02 04:02
IO流
java.io.File
1)创建File对象: new File(文件或目录路径字符串); new File(父目录 , 文件或目录名);
2)文件目录属性:
canRead(); canWrite(); canExecute(); exists(); getName(); getPath(); getParent(); getParentFile();
isDirectory(); isFile(); isHidden(); lastModify(); length() 文件的字节量;
creatNewFile(); 创建文件,文件所在目录如果不存在,会出现异常
createTempFIle(前缀 , 后缀); 在系统临时目录中创建临时文件
delete(); 删除文件或目录,对目录来说,只能删除空目录
mkdir(); 创建目录,返回boolean表示是否创建成功
mkdirs(); 创建多层目录,返回boolean 表示是否创建成功
renameTo( File ); 重命名,返回 boolean 表示是否成功
3)目录列表方法:
list(); 返回文件名称数组String[ ]
listFiles(); 返回文件对象数组 File[ ]
使用过滤器对文件列表进行过滤
list(FilenameFilter); listFiles(FilenameFilter); listFiles(FileFilter);
java.io.RandomAccessFile
文件读写工具,一般用于读写具有固定直接格式的文件,把文件看成是一个大型的字节数组。
new RandomAccessFile( File/FilePath , mode); mode: "r" "rw" "rws" "rwd"
方法:
length(); 获得文件字节量
seek(索引位置);
getFilePointer(); 获得当前指针位置
read(); 读取一个字节,前面补3个0字节,作int类型返回
read(byte[ ]); 每次读取多个字节,放入指定数组,并返回这次读取的字节数量
read(byte[ ] , 起始位置 , 最多读取个数);
readInt(); 读取4个字节,作整数类型返回
readDouble();
readUTF(); 先读前两个字节,确定字节量,然后按字节量读取字符串
write(int);将整数前三个字节不要,写出最后一个字节;
writeInt(); 将int的四个字节写出
writeDouble();
writeUTF(); 先写两个字节表示字符串的字节量,再将表示字符串的字节写出
bmp图形:前54个字节,是bmp格式头。第19 - 22字节表示宽度,第23 - 26字节表示高度
java.io.InputStream
java.io.OutputStream
FileOutputStream
BufferedOutputStram;提供内存缓冲区,提高读写效率。默认缓冲区8k,可通过构造方法指定大小
DataOutputStream;以字节方式读写数据,用于读写有固定格式的文件,方法与RandomAccess相同
ByteArrayOutputStream
PrintStream;将任何数据作为字符串输出
线程:
两种方式:继承Tread类,实现Rannable接口
方法:Thread.currentThread(); 获得正在执行此行代码的线程,获得当前线程
Thread.yield(); 放弃执行,让给其它线程执行
Thread.sleep(毫秒值); 当前线程在此处暂停指定的时长
getPriority(); setPriority(); 设置线程优先级[1 , 10],默认5,不要设置过高或过低的优先级
interrupt(); 打断一个线程对象的休息
isDaemon(); setDaemon(true); 将线程设置为Daemon线程:后台线程
join(); 将另一线程加入到当前线程中,等待另一线程结束后,当前线程再继续,一般用于等待另一线程的 运算结果
isAlive(); 判断是否是活动线程,start后,dead前
线程结束:不能用stop()方法,应该自己用逻辑控制线程结束,控制run方法结束,return ,throw
synchronized:
同步关键字控制同步锁;一个线程执行同步快内的代码时,必须获得同步锁才能执行
synchronized代码块:线程安全,多个线程访问同一个数据时不会发生访问冲突,不会发生脏读。
wait(); 当前线程在调用的对象上等待,直到收到通知后继续执行;
wait(毫秒);
notify(); 通知一个等待的线程;
notifyAll(); 通知所有等待的线程
使用等待,通知,必须踩同步块内,wait和sleep区别:wait释放锁,sleep不释放锁
import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.io.Reader;import java.io.UnsupportedEncodingException;import java.util.ArrayList;import java.util.List;import android.content.Context;import android.os.Environment;public class FileUtil {private String SDPATH;String PACKAGE_NAME = "com.kuukaa.kxeg";public String DATABASE_PATH = "/data/data/" + PACKAGE_NAME;public String getSDPATH() {return SDPATH;}public FileUtil() {SDPATH = Environment.getExternalStorageDirectory() + "/";////////System.out.println(SDPATH);}public File[] getPathFiles(String path) {File f = new File(getSDPATH() + path);return f.listFiles();}public File createSDFile(String filename) throws IOException {File f = new File(getSDPATH() + filename);f.createNewFile();return f;}public boolean deleteSDFile(String filename) throws IOException {File f = new File(getSDPATH() + filename);return f.delete();}public File createSDDir(String dir) throws IOException {File d = new File(getSDPATH() + dir);if (!d.isDirectory())d.mkdir();return d;}public void createSDDirs(String dir) throws IOException {String[] dirs = dir.split("/");String temp = "";for (int i = 0; i < dirs.length; i++) {if (dirs[i] != null && dirs[i].length() > 0) {temp += "/" + dirs[i];createSDDir(temp);}}}public boolean isFileExist(String filename) {File f = new File(getSDPATH() + filename);return f.exists();}public boolean isFileExistPath(String filename) {File f = new File(filename);return f.exists();}//public File write2SDFromInput(String path, String filename, String input) throws IOException {//File file = null;//OutputStream out = null;////try {////createSDDirs(path);//file = createSDFile(path + "/" + filename);////out = new FileOutputStream(file);////OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(file), "UTF-8");//BufferedWriter writer = new BufferedWriter(write);////PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter(filePathAndName)));////PrintWriter writer = new PrintWriter(new FileWriter(filePathAndName));////writer.write(input);//writer.close();////} catch (FileNotFoundException e) {//throw e;//} catch (IOException e) {//throw e;//} /*finally{//try {//out.close();//} catch (IOException e) {//throw e;//}//}*/////return file;//}/** * 将一个InputStream里面的数据写入到SD卡中 */public File writeToSDFromInput(String path, String fileName, InputStream input) {File file = null;OutputStream output = null;try {createSDDir(path);file = createSDFile(path + fileName);output = new FileOutputStream(file);byte buffer[] = new byte[1024];int len = 0;//如果下载成功就开往SD卡里些数据while ((len = input.read(buffer)) != -1) {output.write(buffer, 0, len);}output.flush();} catch (Exception e) {e.printStackTrace();} finally {try {input.close();output.close();} catch (Exception e) {e.printStackTrace();}}return file;}public String reader2Str(String path, String filename) throws FileNotFoundException, IOException, UnsupportedEncodingException {StringBuffer sb = new StringBuffer();InputStreamReader isr;try {isr = new InputStreamReader(new FileInputStream(new File(getSDPATH() + path + "/" + filename)), "GBK");BufferedReader br = new BufferedReader(isr);String str = "";while ((str = br.readLine()) != null) {sb.append(str);}} catch (UnsupportedEncodingException e) {throw e;} catch (FileNotFoundException e) {throw e;} catch (IOException e) {throw e;}return sb.toString();}public List reader2List(String path, String filename) throws FileNotFoundException, IOException, UnsupportedEncodingException {List<String> sb = new ArrayList();if (sb != null && sb.size() > 0)return sb;InputStreamReader isr;try {isr = new InputStreamReader(new FileInputStream(new File(getSDPATH() + path + "/" + filename)), "GBK");BufferedReader br = new BufferedReader(isr);String str = "";while ((str = br.readLine()) != null) {sb.add(str.trim());}} catch (UnsupportedEncodingException e) {throw e;} catch (FileNotFoundException e) {throw e;} catch (IOException e) {throw e;}return sb;}public File createDATADir(String dir) throws IOException {File d = new File(DATABASE_PATH + "/" + dir);if (!d.exists())d.mkdir();return d;}public void savetext(Context con) {try {FileOutputStream outStream = con.openFileOutput(DATABASE_PATH + "/zip/a.txt", Context.MODE_WORLD_READABLE);outStream.write("asdf".getBytes());outStream.close();} catch (FileNotFoundException e) {return;} catch (IOException e) {return;}}public void loadtext(Context con) {try {FileInputStream inStream = con.openFileInput(DATABASE_PATH + "/zip/a.txt");ByteArrayOutputStream stream = new ByteArrayOutputStream();byte[] buffer = new byte[1024];int length = -1;while ((length = inStream.read(buffer)) != -1) {stream.write(buffer, 0, length);}stream.close();inStream.close();////System.out.println(stream);} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {return;}}}
public static String readFromSDcard(String fileName) {String fileContent = "";try {File f = new File("/mnt/sdcard/" + fileName);if (f.isFile() && f.exists()) {InputStreamReader read = new InputStreamReader(new FileInputStream(f), "gbk");BufferedReader reader = new BufferedReader(read);String line;while ((line = reader.readLine()) != null) {fileContent += line;}read.close();}} catch (Exception e) {e.printStackTrace();}return fileContent;}/* 写入到文件 */public static void writeFile(String fileName, String fileContent) {try {File f = new File(fileName);if (!f.exists()) {f.createNewFile();}OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(f), "gbk");BufferedWriter writer = new BufferedWriter(write);writer.write(fileContent);writer.close();} catch (Exception e) {e.printStackTrace();}}
- Java基础(五)(IO流,线程)
- 黑马程序员--Java基础五(Java中的IO流)
- JAVA基础(五)IO(一)
- JAVA基础(五)IO(二)
- Java基础学习篇(五)之Java.io包
- 黑马程序员 JAVA基础<五> IO流
- 【Java基础 五】---输入输出io流
- Java基础(IO流)
- java IO-输入输出流(五)
- Java IO流详解(五)
- java IO (五) File
- Java IO(五):FileOutputStream
- java基础(五)
- 黑马程序员 java基础<五>--IO流(3)
- Java基础——IO(流)
- Java基础4(IO流)
- Java基础复习:IO流(续)
- JAVA-IO流学习笔记(基础)
- 学习笔记-概率问题
- Linux系统服务 3 ---- FTP服务原理及vsftpd服务配置
- 解读C指针(4)——指针运算
- 研究了一下关于图片预览的方法
- 15. 转换二叉查找树
- Java基础(五)(IO流,线程)
- HDU Starship Troopers(树形DP)
- U-boot中实现Yaffs2+HwEcc
- 女生写的如何追mm.看完后嫩头青变高手
- 黑马程序员——java面试中常遇到的面试项目——交通灯系统管理项目
- jsp中include指令和标签
- 数组中大于等于左侧所有数,小于等于右侧所有数的数
- Android电话拨打流程源码分析
- 文件读写基础