目录
一、从磁盘的TXT文件读取数据,存取到另外一个TXT文件中并统计文件中的行数
二、建立一个大于8G的文件然后用randomAccessFile在文件中随机产生100个随机串,然后在反过了读取该文件,找到这100个数的位置
三、定义一个内部类
四、写一个界面,并添加监听事件
一、从磁盘的TXT文件读取数据,存取到另外一个TXT文件中
代码
/**
* @ClassName: FileOperateDemo
* @Description: TODO(请用一句话描述这个类的作用)
* @date 2016年11月12日 下午6:40:51
* @author 张海平
* 湖南师范大学工程与设计学院前栋407工作室
*
*/
package com.zhanghaiping.javaHomeWork;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
public class FileOperateDemo {
public static void main(String[] args) {
File saveFile = new File("F://存储内容.txt");
String fileName = "F://内容文件.txt";
if (!saveFile.exists()) {
try {
saveFile.createNewFile();
} catch (Exception e) {
// TODO: handle exception
}
}
readeFile(fileName, saveFile);
}
public static void readeFile(String fileName,File saveFile) {
File file = new File(fileName);
BufferedReader bReader = null;
try {
FileWriter fWriter = new FileWriter(saveFile,true);
BufferedWriter bWriter = new BufferedWriter(fWriter);
bReader = new BufferedReader(new FileReader(file));
int lineNum = 1;
String tempString = null;
while ((tempString = bReader.readLine()) != null) {
bWriter.write(tempString);
bWriter.newLine();
lineNum ++;
}
bWriter.close();
} catch (Exception e) {
// TODO: handle exception
}
}
}
二、建立一个大于8G的文件然后用randomAccessFile在文件中随机产生100个随机串,然后在反过了读取该文件,找到这100个数的位置
/**
* @ClassName: RanAccFileDemo
* @Description: TODO(请用一句话描述这个类的作用)
* @date 2016年11月12日 下午8:02:49
* @author 张海平
* 湖南师范大学工程与设计学院前栋407工作室
*
*/
package com.zhanghaiping.javaHomeWork;
import java.io.BufferedWriter;
import java.io.File;
//import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
//import java.io.RandomAccessFile;
import java.io.RandomAccessFile;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RanAccFileDemo {
public static void main(String[] args) throws IOException {
File file = new File("F://test8Gb.txt");
//注釋的這一段代碼用來生成一個8Gb的文件
// String tempString = "RandomAccessFile是用来访问那些保存数据记录的文件的"
// + "RandomAccessFile是用来访问那些保存数据记录的文件的"
// + "RandomAccessFile是用来访问那些保存数据记录的文件的"
// + "RandomAccessFile是用来访问那些保存数据记录的文件的"
// + "RandomAccessFile是用来访问那些保存数据记录的文件的"
// + "RandomAccessFile是用来访问那些保存数据记录的文件的"
// + "RandomAccessFile是用来访问那些保存数据记录的文件的"
// + "RandomAccessFile是用来访问那些保存数据记录的文件的";
// try {
// FileWriter fWriter = new FileWriter(file,true);
// BufferedWriter bWriter = new BufferedWriter(fWriter);
// while (file.length() != 1) {
// bWriter.write(tempString + "\r\n");
// System.out.println(file.length());//打印文件大小,根據文件大小來終止程序運行
// }
// bWriter.close();
// } catch (Exception e) {
// e.printStackTrace();
// }
RandomAccessFile raf = new RandomAccessFile(file, "rw");
Pattern pattern = Pattern.compile("*//d{2}*");
try {
for (int i = 0; i < 100; i++) {
raf.write((int)(i*Math.random()));
}
} catch (Exception e) {
e.printStackTrace();
}
int i = 0;
String tempString = null;
raf.seek(0);
while (raf.equals(null) == false) {
tempString = raf.readLine();
Matcher isContain = pattern.matcher(tempString);
if (!isContain.matches()) {
i ++;
System.out.println("位置:" + raf.getFilePointer());
}
i = tempString.length() + i;
raf.seek(i);
}
}
}
* 三、定义一个内部类*
内部类是指在一个外部类的内部再定义一个类。类名不需要和文件夹相同。
* 内部类可以是静态static的,也可用public,default,protected和private修饰。(而外部顶级类即类名和文件名相同的只能使用public和default)
内部类是一个编译时的概念,一旦编译成功,就会成为完全不同的两类。对于一个名为outer的外部类和其内部定义的名为inner的内部类。编译完成后出现outer.class和outer$inner.class两类。所以内部类的成员变量/方法名可以和外部类的相同。
详情可以访问: Java内部类详解
/**
* @ClassName: InnerClassDemo
* @Description: TODO(请用一句话描述这个类的作用)
* @date 2016年11月12日 下午10:13:49
* @author 张海平
* 湖南师范大学工程与设计学院前栋407工作室
*
*/
package com.zhanghaiping.javaHomeWork;
class PersonInner{
class Men{
int ID;
public void innerMethod(){
System.out.println("內部類方法: ");
}
}
public void outerMethod(){
System.out.println("外部類方法:");
}
}
public class InnerClassDemo {
public static void main(String[] args) {
PersonInner person = new PersonInner();
PersonInner.Men men = person.new Men();
person.outerMethod();
men.innerMethod();
}
}
运行结果:
外部類方法:
內部類方法:
四、写一个界面,并添加监听事件
写一个好玩的小程序,这里写一个对话框,然后添加两个按钮,如下图所示:
这里为两个按钮添加鼠标监听事件,然后当你把鼠标移到“不是”的按钮上面之后上面就会变成“是”看图:
然后为添加的点击事件,具体看代码了:
/**
* @ClassName: EventListenerDemo
* @Description: TODO(请用一句话描述这个类的作用)
* @date 2016年11月12日 下午10:37:56
* @author 张海平
* 湖南师范大学工程与设计学院前栋407工作室
*
*/
package com.zhanghaiping.javaHomeWork;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JToolBar;
public class EventListenerDemo {
JFrame jf = new JFrame("快回答");
JToolBar jtb = new JToolBar();
JLabel jTable = new JLabel("你是不是喜歡我");
JButton canButton = new JButton("不是");
JButton okButton = new JButton("是");
public EventListenerDemo(){
jtb.add(jTable);
jtb.add(canButton);
jtb.add(okButton);
jf.add(jtb);
jf.setSize(350,150);
jf.setLocation(400, 200);
jf.setVisible(true);
canButton.addMouseListener(new MyListener());
okButton.addMouseListener(new MyListener());
}
class MyListener implements MouseListener{
@Override
public void mouseClicked(MouseEvent e) {
JOptionPane.showMessageDialog(null,"我就知道你是愛我的");
}
@Override
public void mousePressed(MouseEvent e) {
JOptionPane.showMessageDialog(null,"我也愛你喲");
}
@Override
public void mouseReleased(MouseEvent e) {
JOptionPane.showMessageDialog(null, "麼麼噠");
}
@Override
public void mouseEntered(MouseEvent e) {
if (canButton.getText() == "不是") {
canButton.setText("是");
okButton.setText("不是");
}else {
canButton.setText("不是");
okButton.setText("是");
}
}
@Override
public void mouseExited(MouseEvent e) {
}
}
public static void main(String[] args){
EventListenerDemo eventListenerDemo = new EventListenerDemo();
}
}
总结
对于文件流的应用自己理解的还不是很好,对于什么时候具体用哪个还不是很清楚,还是得多去翻翻别人的博客啊。
这一次的这几个当中最难的题目就是第二道题了,首先需要写一个8G大的文件,写的时候一定要记得将编码格式也写进去,要不然读出来的时候很大的概率乱码(看你的IDE默认的编码格式),最好写入的时候编码格式GBK,然后你在读取出来的时候夜很好辨别,像我这里在写入的时候没有规定写入格式以至于读出来的时候都是乱码,然后后面我需要查找里面的指定的内容就麻烦了,这道题目还是有错误存在的,大家在借鉴的时候知道大概的思想就好了,具体应用的话还是不够严谨的。
最后这个界面的程序还是有一点意思的,很好玩的,可以整下别人哦。
如果有什么错误或者可以改善的地方欢迎大家留言评论指出,(*^__^*) 嘻嘻……。