上机实验8 实现文件的复制访问

简介: 上机实验8 实现文件的复制访问

实验1 文件的创建

一、实验目的

掌握File类的使用

二、实验内容

1.在d:\xxx\ten下利用File创建文件和文件夹,通过File类的方法,了解文件的相关信息。

三、程序代码

1. import java.io.File;
2. import java.io.IOException;
3. 
4. public class CreateFile {
5. public static void main(String[] args) throws IOException {
6.  File file1 = new File("d:\\FYX.txt");
7.  File file2 = new File("d:","HXY.txt");
8.  File file = new File("d:\\LWL");
9.  file1.createNewFile();
10.   file2.createNewFile();
11.   file.mkdir();
12.   }
13. }

实验2 文件的复制

一、实验目的

掌握字节流的读写操作

二、实验内容

1.将d:\abc.txt文件(不存在创建)复制到当前目录,文件名不变。

2.将d:\jieai.jpg文件复制到桌面,文件名改为tupian.jpg

三、程序代码

1. import java.io.File;
2. import java.io.FileInputStream;
3. import java.io.FileOutputStream;
4. import java.io.IOException;
5. import java.io.InputStream;
6. import java.io.OutputStream;
7. 
8. public class CopyFile {
9.   public static void main(String[] args) throws IOException {
10.        FileInputStream fis=new FileInputStream("d:\\FYX.txt");
11.        FileOutputStream fos=new FileOutputStream("d:\\FYX.txt");
12.        FileInputStream f1=new FileInputStream("d:\\jieai.jpg");
13.        FileOutputStream f2=new FileOutputStream("C:\\Users\\29752\\Desktop\\tupian.jpg");
14.        byte[] bys=new byte[1024];
15.        int len;
16.        while((len=fis.read(bys))!=-1){
17.          fos.write(bys, 0, len);
18.        }
19.        while((len=f1.read(bys))!=-1){
20.          f2.write(bys, 0, len);
21.        }
22.        fis.close();
23.        fos.close();
24.        f1.close();
25.        f2.close();
26.       }  
27. }

四、实验指导

1.采用InputStream流的子类FileInputStream实现文件的读出操作,采用OutputStream流的子类FileOutputStream实现文件的写操作。

2.读文件常用read方法,read方法可以实现一次读取一个字节,一次读取一个字节数组,分别用不同的方法读取文件信息

3.写文件常用write方法,write方法可以实现一次写一个字节,一次写一个字节数组,分别用不同的方法写文件信息。

实验3 记事本程序

一、实验目的

  综合掌握界面编写文件访问的程序

二、实验内容

1.编写如下界面

2.利用所学知识实现文本文件的新建、打开和保存操作

3.查找资料,学会在Java中利用剪贴板实现信息的复制和粘贴操作。

三、程序代码

1. import java.awt.FileDialog;
2. import java.awt.event.ActionEvent;
3. import java.awt.event.ActionListener;
4. import java.io.File;
5. import java.io.FileReader;
6. import java.io.FileWriter;
7. import java.io.IOException;
8. 
9. import javax.swing.JFileChooser;
10. import javax.swing.JFrame;
11. import javax.swing.JMenu;
12. import javax.swing.JMenuBar;
13. import javax.swing.JMenuItem;
14. import javax.swing.JOptionPane;
15. import javax.swing.JScrollPane;
16. 
17. import javax.swing.JTextArea;
18. 
19. public class NoteFile extends JFrame {
20.   JMenuBar jmb;
21.   JMenu jm1,jm2,jm3,jm4;
22.   JMenuItem jm11,jm12,jm13,jm14,jm15,jm31,jm32,jm33,jm41;
23.   JTextArea jta;
24.   public NoteFile() {
25.     setTitle("记事本");
26.     setBounds(300,300,500,400);
27.     init();
28.     setVisible(true);
29.     setDefaultCloseOperation(EXIT_ON_CLOSE);
30.     jm11.addActionListener(new ActionListener() {
31.       public void actionPerformed(ActionEvent e) {
32.         setTitle("记事本"+"----未命名");
33.         jta.setText("");}});
34.     jm12.addActionListener(new ActionListener() {
35.       public void actionPerformed(ActionEvent e) {
36.         JFileChooser jfc=new JFileChooser();
37.         int sd = jfc.showOpenDialog(null);
38.         File file=null;
39.         if (sd==jfc.APPROVE_OPTION){
40.           file=jfc.getSelectedFile();
41.         }
42.         if (file!=null){
43.           setTitle("记事本----"+file.getName());
44.           FileReader fr=null;
45.           try{//创建文件字符输入流对象
46.           fr=new FileReader(file);//按字符数组读取信息
47.           char[] chs=new char[1024];
48.           int len;
49.           jta.setText("");//清空文本区内容
50.           while((len=fr.read(chs))!=-1){//读取文件信息
51.             //将读取的字符数组添加到文本区中
52.             jta.append(new String(chs,0,len));
53.           }
54.           }catch(IOException e2){//如果有异常,弹出消息框
55.             JOptionPane.showMessageDialog(null, "文件访问出现问题");
56.           }finally{//资源的释放放到finally模块中
57.             if (fr!=null){//如果fr不为空
58.               try {
59.                 fr.close();
60.               } catch (IOException e1) {
61.                 // TODO Auto-generated catch block
62.                 e1.printStackTrace();}}}}}});
63.     jm13.addActionListener(new ActionListener() {
64.       public void actionPerformed(ActionEvent e) {
65.         FileDialog fd=new FileDialog(NoteFile.this,"打开",FileDialog.LOAD);
66.         fd.setVisible(true);
67.         File file=new File(fd.getDirectory()+"\\"+fd.getFile());
68.         FileReader fr=null;
69.         try{
70.         fr=new FileReader(file);
71.         char[] chs=new char[1024];
72.         int len;
73.         jta.setText("");
74.         while((len=fr.read(chs))!=-1){
75.           jta.append(new String(chs,0,len));
76.         } setTitle("记事本----"+file.getName());
77.         }catch(IOException e2){
78.         }finally{
79.           if (fr!=null){
80.             try {
81.               fr.close();
82.             } catch (IOException e1) {
83.               e1.printStackTrace();}}}}});
84.     jm14.addActionListener(new ActionListener() {
85.       public void actionPerformed(ActionEvent e) {
86.         //创建保存对话框对象,设置mode,第三个参数表示是打开还是保存
87.         FileDialog fd=new FileDialog(NoteFile.this,"保存",FileDialog.SAVE);
88.         //显示对话框
89.         fd.setVisible(true);//获取用户选择的文件的完整名称
90.         File file=new File(fd.getDirectory()+"\\"+fd.getFile());
91.         FileWriter fw=null;
92.         try{
93.           fw=new FileWriter(file);//写文本区的数据到文件
94.           fw.write(jta.getText());
95.           setTitle("记事本----"+file.getName());
96.         }catch(IOException e1){
97.         }finally{
98.           if (fw!=null){
99.             try {
100.              fw.close();
101.            } catch (IOException e1) {
102.              e1.printStackTrace();}}}}});
103.    jm31.addActionListener(new ActionListener() {
104.      public void actionPerformed(ActionEvent e) {
105.        jta.cut();
106.      }
107.    });
108.    jm32.addActionListener(new ActionListener() {
109.      public void actionPerformed(ActionEvent e) {
110.        jta.copy();
111.      }
112.    });
113.    jm33.addActionListener(new ActionListener() {
114.      public void actionPerformed(ActionEvent e) {
115.        jta.paste();
116.      }
117.    });
118.    jm41.addActionListener(new ActionListener() {
119.      public void actionPerformed(ActionEvent arg0) {
120.        JOptionPane.showMessageDialog(null, "关于记事本\r\n版本:v1.0\r\n作者:LWL\r\n欢迎使用我的记事本,有问题联系QQ:123456");
121.      }
122.    });}
123.  public void init() {
124.    jmb=new JMenuBar();
125.      jm1=new JMenu("文件");
126.      jm3=new JMenu("编辑");
127.      jm4=new JMenu("帮助");
128.      jm11=new JMenuItem("新建");
129.      jm12=new JMenuItem("打开1");
130.      jm13=new JMenuItem("打开2");
131.      jm14=new JMenuItem("保存");
132.      jm15=new JMenuItem("退出");
133.      jm31=new JMenuItem("剪切");
134.      jm32=new JMenuItem("复制");
135.      jm33=new JMenuItem("粘贴");
136.      jm41=new JMenuItem("关于");
137.      jm1.add(jm11);
138.      jm1.add(jm12);
139.      jm1.add(jm13);
140.      jm1.add(jm14);
141.      jm1.add(jm15);
142.      jm3.add(jm31);
143.      jm3.add(jm32);
144.      jm3.add(jm33);
145.      jm4.add(jm41);
146.      jmb.add(jm1);
147.      jmb.add(jm3);
148.      jmb.add(jm4);
149.      setJMenuBar(jmb);
150.      jta=new JTextArea();
151.      JScrollPane jsp=new JScrollPane(jta);
152.      add(jsp);
153.  }
154.  public static void main(String[] args) {
155.    new NoteFile();
156.  }
157. }

四、实验指导

1.菜单相应单击事件一般使用的监听器是ActionListener接口

2.利用JFileChooser()的showSaveDialog(Component a);  showOpenDialog(Component a);两个方法显示保存和打开对话框。通过对话框获取要保存或打开文件的完整路径描述

public File getCurrentDirectory()返回当前目录

public File getSelectedFile() 返回当前选择的文件

3.对于文本文件,常用字符流实现文件的读写操作。

实验四 简单网络爬虫的实现

1.学习URL类,实现将网页文件作为输入流对象

java.net.URL

构造方法   new URL(网址字符串)

创建输入流的方法   openStream:打开到此 URL 的连接并返回一个用于从该连接读入的 InputStream。

2.利用网络爬虫原理,掌握Scanner类读取Web文件内容的方法。

1. import java.util.ArrayList;
2. import java.util.Scanner;
3. 
4. class WebCrawler{//WebCrawler类
5.  private String webURL;//私有字段
6.  public WebCrawler(String u){//WebCrawler类的构造方法
7.    webURL = u;
8.  }
9. void getURL(){//getURL方法
10.   ArrayList<String>list1 = new ArrayList<>();//存储待处理的URL
11.   ArrayList<String>list2 = new ArrayList<>();//存储处理过的URL
12.   list1.add(webURL);//将首地址添加到集合
13.   while(!list1.isEmpty()&&list2.size()<=20){//循环处理list1中的每个URL
14.     String urlString = list1.remove(0);//将第一个URL赋值给urlString
15.     if(!list2.contains(urlString)){
16.       list2.add(urlString);//添加urlString中的URL值到list2
17.       System.out.println("发现URL:"+urlString);//输出爬取到的urlString
18.       for(String s:getSubURL(urlString)){//遍历getSubURL()方法返回的集合
19.         if(!list2.contains(s))//如果list2中不包含该URL值
20.           list1.add(s);//将其添加到list1集合中
21.         }
22.       }
23.   }System.out.println("运行结束");
24. }
25. //私有字段getSubURL()方法,用于爬取页面中包含的URL数据
26. private ArrayList<String>getSubURL(String urlString){
27.   ArrayList<String>list = new ArrayList<>();//用于存储爬取到的URL数据
28.   try{
29.   java.net.URL url = new java.net.URL(urlString);//创建java.net.URL类数据
30.   Scanner val = new Scanner(url.openStream());//读取某个页面的所有数据
31.   int current = 0;
32.   while (val.hasNext()){//每次读取一行直到文件尾
33.     String line = val.nextLine();
34.     //获取读到的一行中字符串“http:”所处的位置
35.     current = line.indexOf("http://",current);
36.     while(current>0){
37.       //获取读到的一行中最后一个双引号出现的位置
38.       int endIndex = line.indexOf("\"",current);
39.       if(endIndex>0){//endIndex若为负值表示没有找到双引号
40.         list.add(line.substring(current,endIndex));
41.         //取出“http://xxx/xxx”表示的URL值
42.         //从endIndex开始查找字符串“http://”所处的位置
43.         current = line.indexOf("http://",endIndex);
44.       }else current = -1;//没有找到双引号,设置current为-1
45.     }
46.   }val.close();//关闭Scanner对象
47. }catch (Exception ex){
48.   System.out.println(ex.getMessage());
49. }return list;}}//返回爬取的结果集
50. public class SX7 {//主类
51. public static void main(String[] args) {//主方法
52.   Scanner val = new Scanner(System.in);//创建对象
53.   System.out.println("输入一个Web网站的URL:");
54.   String url = val.nextLine();//读取用户输入的起始URL数据
55.   val.close();//关闭对象
56.   WebCrawler crawler = new WebCrawler(url);//创建一个WebCrawler类对象crawler
57.   crawler.getURL();//调用crawler对象的getURL()方法
58.   }
59. }
目录
相关文章
|
1月前
|
Kubernetes Linux 容器
1.xshell传不了文件输出0000如何解决.....2.k8s中metalLB文件内容
1.xshell传不了文件输出0000如何解决.....2.k8s中metalLB文件内容
利用OllyDbg对程序内容进行修改实验
利用OllyDbg对程序内容进行修改实验
|
SQL 存储 小程序
[原]排错实战——VS清空最近打开的工程记录
快速清理 visual studio 最近打开的工程列表,有脚本也有小程序
|
存储
上机实验6 集合案例
上机实验6 集合案例
113 0
jira学习案例61-userState的懒初始化和保存函数状态1
jira学习案例61-userState的懒初始化和保存函数状态1
79 0
jira学习案例61-userState的懒初始化和保存函数状态1
jira学习案例62-userState的懒初始化和保存函数状态2
jira学习案例62-userState的懒初始化和保存函数状态2
51 0
jira学习案例62-userState的懒初始化和保存函数状态2
jira学习案例63-userState的懒初始化和保存函数状态3
jira学习案例63-userState的懒初始化和保存函数状态3
201 0
jira学习案例63-userState的懒初始化和保存函数状态3
|
测试技术 数据库
测试用例(包含测经典试点全集图解,强烈建议保存收藏)(一)
测试用例(Test Case)是指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。其内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,最终形成文档。简单地认为,测试用例是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,用于核实是否满足某个特定软件需求。
738 1
测试用例(包含测经典试点全集图解,强烈建议保存收藏)(一)
|
编解码 Windows
Win系统 - 如何实现N卡四屏复制输出呢?
Win系统 - 如何实现N卡四屏复制输出呢?
227 0
Win系统 - 如何实现N卡四屏复制输出呢?