引用页_初学Java:仿写记事本_SaveFile.java

原创 2012年03月22日 20:28:09

<< 返回
  

import java.io.File;
import java.io.FileOutputStream;
import java.io.PrintStream;

import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.filechooser.FileNameExtensionFilter;

public class SaveFile {
	private Notepad notepad = null;
	private boolean saveDone = false;
	private File file = null;
	private StringBuffer filePath = null;
	private File currentFile = null;
	private JFileChooser fileChooser = null;
	private FileNameExtensionFilter filterTXT = null;	// TXT过滤器
	private int result = 0;
	private String strOld = null;
	private String strNew = null;
	
	public SaveFile(Notepad notepad) {
		this.notepad = notepad;
		this.fileChooser = new JFileChooser();
		this.currentFile = this.notepad.getCurrentFile();
		if(this.currentFile == null) {	//如果当前是一个新文件
			this.saveFile();			//显示选择框
		} else {
			this.file = this.currentFile;
			this.printFile();
		}
	}
	
	public SaveFile(Notepad notepad, String another) {
		this.notepad = notepad;
		this.fileChooser = new JFileChooser();
		
		this.currentFile = null;	//把当前当作新文件(实际上已经存在)
		this.saveFile();
	}
	
	private void saveFile() {
		this.filterTXT = new FileNameExtensionFilter("文本文档(*.txt)", "txt");
		this.fileChooser.setFileFilter(this.filterTXT);	//设置默认的TXT文件过滤器
		result = fileChooser.showSaveDialog(this.notepad.getFrame());
		if(result == JFileChooser.APPROVE_OPTION) {	//如果点击了“保存”
			this.file = fileChooser.getSelectedFile();	//得到已选择的文件
			if(this.fileChooser.getFileFilter() == this.filterTXT) { //如果当前的过滤器是TXT的
				System.out.println("选择器是TXT");
				this.filePath = new StringBuffer(file.getAbsolutePath());	//得到选择的文件的绝对路径
				if(".txt".equals(this.filePath.subSequence(this.filePath.length() - 4, this.filePath.length()))
						|| ".TXT".equals(this.filePath.subSequence(this.filePath.length() - 4, this.filePath.length()))
						) {	//如果文件后缀名是.txt或者.TXT
					System.out.println("后缀名是TXT");
				} else {	//如果后缀名不是.txt,也不是.TXT
					System.out.println("后缀名不是TXT");
					this.file = new File(this.filePath.toString() + ".txt");	//自动补上.txt后缀名
				}
			}	//如果当前不是TXT过滤器,则略过补全后缀名的操作
			if (this.currentFile == null) {	//如果这是一个新文件 
				if(this.file.exists()) {	//而且选择的文件已经存在了
					result = JOptionPane.showConfirmDialog(fileChooser, "该文件已存在,是否覆盖?", "确认", 1);
					if(result == JOptionPane.YES_OPTION) {	//如果选择了“是”
						this.printFile();
					}
				} else {	//当前选择的文件不存在
					this.printFile();
				}
			} else if (this.file.getAbsolutePath().equals(this.currentFile.getAbsolutePath())) {
				//如果选择的文件就是当前文件
				this.printFile();
			} else {	//如果选择的文件不是当前文件
				if(this.file.exists()) {	//而且选择的文件已经存在了
					result = JOptionPane.showConfirmDialog(fileChooser, "该文件已存在,是否覆盖?", "确认", 1);
					if(result == JOptionPane.YES_OPTION) {	//如果选择了“是”
						this.printFile();
					}
				} else {	//当前选择的文件不存在
					this.printFile();
				}
			}
		} else {
			file = null;
		}
	}
	
	private void printFile() {	// 文件内容输出
		if (this.file.canWrite() || !this.file.exists()) {
			try {
				PrintStream out =  new PrintStream(new FileOutputStream(file));
				strOld = new String(this.notepad.getTextArea().getText());
				strNew = strOld.replaceAll("\\n", "\r\n");	//正则替换,Windows使用\r\n表示换行
				out.print(strNew);
				out.close();
				System.out.println("保存的内容为:\n" + strNew);
				notepad.setCurrentFile(this.file);
				notepad.changTitle(this.file.getName());
				notepad.setSavedString(this.notepad.getTextArea().getText());
				this.saveDone = true;
			} catch (Exception ex) {
				ex.printStackTrace();
			}
		} else {
			JOptionPane.showMessageDialog(fileChooser, "该文件为只读的,无法写入!");
		}
	}
	
	public boolean saveDone() {
		return this.saveDone;
	}
}

  
<< 返回

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

引用页_初学Java:仿写记事本_Notepad.java

返回    import java.awt.BorderLayout; import java.awt.Font; import java.awt.event.ActionEvent; impor...

引用页_初学Java:仿写记事本_TextKeyListener.java

返回    /** * 为了状态栏功能而设立的监听类 * 第一次改写: * 同时也适用于对“编辑”-“删除”菜单的可用设置 * 第二次改写: * 同时也适用于对“格式”-“字体”...

引用页_初学Java:仿写记事本_GoDialog.java

返回    import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListene...

引用页_初学Java:仿写记事本_Find.java

返回    import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListene...

引用页_初学Java:仿写记事本_TextMouseListener.java

返回    /** * 为了状态栏功能而设立的监听类 * 第一次改写: * 同时也适用于对“编辑”-“删除”菜单的可用设置 * 第二次改写: * 同时也适用于对“格式”-“字体”...

引用页_初学Java:仿写记事本_OpenFile.java

返回    import java.io.File; import java.io.FileReader; import java.io.Reader; import javax.swing...

初学Java:仿写记事本

一、前言      纸上得来终觉浅,绝知此事要躬行。   自学Java已经有一段时间了,最近读完了李兴华老师的《Java开发实战经典》一书,受益匪浅。感觉其中的知识比较全面,实用性也比较高,为了...

java写的仿windos的记事本

  • 2010-02-27 21:01
  • 464KB
  • 下载

Java仿Windows记事本源代码

先上截图: 源代码:import java.awt.*; import javax.swing.*; import javax.swing.filechooser.FileNameExt...

Java学了几个月,写的记事本,从网上借鉴了一部分,可能有些不足的地方,分享一下~~

package myeditor; import java.awt.*; import java.awt.datatransfer.Clipboard; import java.awt....
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)