欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Beego 学习笔记12:文件的操作

程序员文章站 2022-03-21 20:47:37
文件的操作 1> 此事例操作的是text文件 2> 文件的操作有读取text内容,将内容写入到文件中,删除文件,创建文件 3> 新建一个控制器,名为rwfile.go.其代码如下: 4> 新建一个filerw.html页面作为显示.其代码如下: 5> 在路由器router.go中添加路由.具体代码如 ......

文件的操作

1>     此事例操作的是text文件

2>     文件的操作有读取text内容,将内容写入到文件中,删除文件,创建文件

3>     新建一个控制器,名为rwfile.go.其代码如下:

package controllers

import (
	"fmt"
	"os"
	"io/ioutil"
	"github.com/astaxie/beego"
)

type ReadController struct {
	beego.Controller
}

//上传下载文件的页面
func (c *ReadController) Get() {
	
	c.TplName = "filerw.html"
}
//创建文件
type CreateController struct {
	beego.Controller
}
func (c *CreateController) Post(){
     //创建文件
	file, error := ioutil.TempFile("static/txtfile", "tmp")
	//文件关闭
	defer file.Close()
	if error != nil {
	   fmt.Println("创建文件失败")
	}
	c.Data["json"]=map[string]interface{}{"data":file.Name()};
	c.ServeJSON();
}
//写入文件
type WriteController struct {
	beego.Controller
}
func (c *WriteController) Post() { 
	confPath := c.GetString("path")
	info:=c.GetString("info")
	content,err := parseWriteConfig(confPath,info)
	if err != nil {
		fmt.Println(err)
    }
	fmt.Println(content)
	c.Data["json"]=map[string]interface{}{"data":string(content)};
	c.ServeJSON();
}

//写入text文件内容  
func parseWriteConfig(confPath,info string) ([]byte,error) {
	fl, err := os.OpenFile(confPath, os.O_APPEND|os.O_CREATE, 0644)
	if err != nil {
		fmt.Println("打开文件失败")
	}
	defer fl.Close()
	byteinfo:=[]byte (info)
	n, err := fl.Write(byteinfo)
	if err == nil && n < len(byteinfo) {
		fmt.Println("写入失败")
		fmt.Println(err)
	}
	return byteinfo, err
}

//读取文件内容
func (c *ReadController) Post() { 
	confPath := c.GetString("path")
	fmt.Println("文件的地址:")
	fmt.Println(confPath)
	content,err := ReadFile(confPath)
	if err != nil {
		c.Data["data"]="";
		fmt.Println(err) 
    } else{
		c.Data["data"]=content;
	}
	fmt.Println(content)
	c.Data["json"]=map[string]interface{}{"data":content};
	c.ServeJSON();
}
//解析text文件内容  
func ReadFile(path string) (str string, err error) {
	//打开文件的路径
	fi, err := os.Open(path)
	if err!=nil{
		fmt.Println("打开文件失败")
		fmt.Println(err)
	}
	defer fi.Close()
	//读取文件的内容
	fd, err := ioutil.ReadAll(fi)
	if err!=nil{
		fmt.Println("读取文件失败")
		fmt.Println(err)
	}
    str = string(fd)
    return str,err
}
//删除文件
type DeleteController struct {
	beego.Controller
}
func (c *DeleteController) Post(){
	isdel:=false;
	file:=c.GetString("path");           //源文件路径
    err := os.Remove(file)               //删除文件
    if err != nil {
        //删除失败,输出错误详细信息
        fmt.Println(err)
	}else {
        //如果删除成功则输出 
		isdel=true
    }
	c.Data["json"]=map[string]interface{}{"data":isdel};
	c.ServeJSON();
}

  

4>     新建一个filerw.html页面作为显示.其代码如下:

 

<!DOCTYPE html>
 
<html>
      <head>
        <title>首页 - 用户列表页面</title>
        <link rel="shortcut icon" href="/static/img/favicon.png" /> 
        <link rel="stylesheet" href="/static/bootstrap/css/bootstrap.css"/>
        <script type="text/javascript" src="/static/js/jquery-2.1.1.min.js"></script> 
        <script type="text/javascript" src="/static/bootstrap/js/bootstrap.min.js"></script> 
      </head>       
    <body>
       <div class="container">
<!--创建text文件-->
<div style="width:100%;height:50px;">
        <button onclick="createtxt()" class="btn btn-primary">创建text文件</button>
        <label id="txtname"></label>
     </div>
      <!--写入文件-->
      <div style="width:100%;height:300px;margin-top:20px;">
          <label>输入内容:</label>
          <textarea id="writeinfo" style="width:50%;height:200px;" class="form-control"></textarea>
          <button value="写入内容" onclick="txtwrite()" class="btn btn-primary" style="margin-top:20px;">写入内容</button>
      </div>
     
      <!--读取文件内容部分-->
      <div style="width:100%;height:300px;">
          <button value="读取内容" onclick="txtread()" class="btn btn-primary" style="margin-bottom:20px;">读取内容</button>            
          <textarea id="readinfo" style="width:50%;height:200px;" class="form-control" ></textarea>
      </div>
         
      <button onclick="deletetxt()" class="btn btn-primary">删除text文件</button>

       </div>
       
        <!--JS部分-->
        <script type="text/javascript">
        
          //创建text文件
          function createtxt(){
            $.ajax({
               type:'post',
               url:'/Home/FileCreate',
               data:{},
               success:function(result){
                   console.log('获取的数据')
                   console.log(result)
                 $("#txtname").html(result.data);
               } 
            })

          }
          //写入文件的内容
          function txtwrite(){
            $.ajax({
               type:'post',
               url:'/Home/FileWrite',
               data:{
                   "info":$("#writeinfo").val(),
                   "path":$("#txtname").html()
               },
               success:function(result){
                   console.log('获取的数据')
                   console.log(result)
                 $("#showinfo").html(result.data);
               } 
            })
          }
          //读取文件的内容
          function txtread(){
            $.ajax({
               type:'post',
               url:'/Home/FileRead',
               data:{
                 "path":$("#txtname").html()
               },
               success:function(result){
                  console.log('获取的数据')
                  console.log(result)
                  $("#readinfo").html(result.data);
               } 
            })
          }
          
           //删除text文件
           function deletetxt(){
            $.ajax({
               type:'post',
               url:'/Home/FileDelete',
               data:{
                   "path": $("#txtname").html()
               },
               success:function(result){
                   console.log('获取的数据')
                   console.log(result)
                   if(result.data){
                      $("#txtname").html('');
                      alert("删除成功");
                   }else{
                      alert("删除失败"); 
                   }                 
               } 
            })

          }
        </script>
    </body>
</html>

  

5>     在路由器router.go中添加路由.具体代码如下:

package routers

import (
	"secondweb/controllers"
	"github.com/astaxie/beego"
)

func init() {
	beego.Router("/", &controllers.MainController{})
	beego.Router("/Home/PageData", &controllers.UserController{})
	beego.Router("/Home/PageNextData", &controllers.YonghuController{})
	beego.Router("/Home/Index", &controllers.PageController{})
	beego.Router("/Home/EasyUI", &controllers.EasyUIController{})
	beego.Router("/Home/EasyUIData", &controllers.EasyUIDataController{})
	beego.Router("/Home/FileOpt", &controllers.FileOptUploadController{})
	beego.Router("/Home/FileDown", &controllers.FileOptDownloadController{})
	beego.Router("/Home/FileRead", &controllers.ReadController{})
	beego.Router("/Home/FileWrite", &controllers.WriteController{})
	beego.Router("/Home/FileCreate", &controllers.CreateController{})
	beego.Router("/Home/FileDelete", &controllers.DeleteController{})
}

  

6>     运行效果如下:

1->在浏览器中输入路由如下,具体的效果如下:

 Beego 学习笔记12:文件的操作

 

2->点击创建text文件,新增一个文件

 Beego 学习笔记12:文件的操作

Beego 学习笔记12:文件的操作

 

 

3->输入内容,点击写入内容,将内容写入到新建的文件中

 Beego 学习笔记12:文件的操作

 

4->点击读取内容,将写入的内容读取出来

 Beego 学习笔记12:文件的操作

 

5->点击删除文件,删除新增的文件

 Beego 学习笔记12:文件的操作

 

 

7>     下一章,讲api的编写。