📄 notepad_treeopenfile.java
字号:
/**
* 树形结构的打开文件事件的类
* 是否要考虑单态模式
*/
package com.edu.sccp.snail.notepad.view;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import com.edu.sccp.snail.notepad.interfaces.Notepad_File;
/**
* @author 小豆包
* @velue 文本的接口属性
* @time 2008-1-8
*/
public class Notepad_TreeOpenFile implements Notepad_File{
Notepad_Main parent_frame = null; //可访问到的类
Notepad_newFile nf = null; // 新建文件的类
File file = null; //要打开的文件
/**
* 构造函数传值
* @param notepad_main
* @param nnf
* @param file
*/
public Notepad_TreeOpenFile(Notepad_Main notepad_main,File file){
this.parent_frame = notepad_main;
this.file = file;
nf = new Notepad_newFile("");
if(isOpen(file)){
Notepad_File_TreeOpenFile(parent_frame,nf,file);
}
}
/**
* 判定是否进行读文件操作
* @param file
* @return
*/
public boolean isOpen(File file){
/*
* 如果文件存在和文件可读
* 则进行读文件操作
*/
if(file != null && file.canRead()){
return true;
}
return false;
}
/**
* 判断一个文件的后缀名
* @return 一个文件后缀名
* @author 小豆包
* @time 08/1/8
*/
public String getExt(File FileSrc){
String Src = FileSrc.getAbsolutePath();
String srcExt = Src.substring(Src.length() - 4,Src.length()).toLowerCase(); //转化成小写为什么?
return srcExt;
//返回文件后缀名
}
/**
* 这就是属性结构的打开事件代码
*/
public void Notepad_File_TreeOpenFile(Notepad_Main parent_frame, Notepad_newFile nf, File file) {
/*
* 得到树形结构得到的文件后缀名
*/
String srcExt = getExt(file);
BufferedReader br = null; //字符读取流
FileInputStream fis = null; //字节读出来 然后转化成16进制
try {
/*
* 文本文件打开方式
*/
if(srcExt.equals(".txt") || srcExt.equals("java") || srcExt.equals(".doc") || srcExt.equals(".log") ){
br = new BufferedReader(new FileReader(file));
String s = "";
String str = "";
while((s = br.readLine())!=null)
{
str += s+"\n";
}
nf.jta.append(str); //构造一个新的文档
nf.setTitle(file.getName() +" ---"+file.getAbsolutePath());
parent_frame.jp1.add(nf); //加到主窗体中去
}else{
/*
* 二进制文件读取方式 以字节读出然后转化成16进制输出
*/
fis = new FileInputStream(file);
int buf = 0;
String str = "";
while((buf = fis.read()) != -1){
str += Integer.toHexString(buf);
}
nf.jta.append(str); //构造一个新的文档
nf.setTitle(file.getName() +" ---"+file.getAbsolutePath());
parent_frame.jp1.add(nf); //加到主窗体中去
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
try{
if(br != null){
br.close();
}if(fis != null){
fis.close();
}
}catch(IOException e){
e.printStackTrace();
}
}
}
public void Notepad_FileSave(Notepad_Main notepad_main, File file) {
}
public void Notepad_FileOpen(Notepad_newFile nnf, File file) {
}
public void Notepad_File_OrtherSave(Notepad_Main notepad_main, File file) {
}
public void Notepad_File_TreeNewFile(Notepad_Main notepad_main, Notepad_newFile nnf, File file) throws IOException {
// TODO Auto-generated method stub
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -