精华内容
下载资源
问答
  • 文件读取之硬盘与内存模式

    万次阅读 2020-01-07 23:27:36
    文件读取 硬盘模式:频繁操作文件 内存模式:一次性将所有内容读取到内存,再快速处理 """ # 硬盘模式 # while True: # find_name = input('please input the search name:') # with open('4.缓冲区.py.txt', 'r', ...
    """
    大文件读取
    硬盘模式:频繁操作文件
    内存模式:一次性将所有内容读取到内存,再快速处理
    """
    
    # 硬盘模式
    # while True:
    #     find_name = input('please input the search name:')
    #     with open('4.缓冲区.py.txt', 'r', encoding='utf-8') as f:
    #         for line in f:
    #             if line.find(find_name) != -1:
    #                 print('找到了:%s' % find_name)
    #                 break
    #         else:
    #             print('没有找到:%s' % find_name)
    
    # 内存模式
    data_list = []
    while True:
        find_name = input('please input the search name:')
        with open('4.缓冲区.py.txt', 'r', encoding='utf-8') as f:
            data_list = f.readlines()
        for line in data_list:
            if line.find(find_name) != -1:
                print('找到了:%s' % find_name)
                break
        else:
            print('没有找到:%s' % find_name)
    

     

    展开全文
  • Java文件读取 jar包内文件读取

    千次阅读 2016-11-16 17:33:17
    最近遇到一些Jar包内外配置文件读取的问题。索性自己测试总结一下,与大家分享。 主要是关于ClassLoader.getResource和Class.getResource方法路径区别的问题。 1. 绝对路径文件读取,最简单,最直接的方式 /**...

    最近遇到一些Jar包内外配置文件读取的问题。索性自己测试总结一下,与大家分享。

    主要是关于ClassLoader.getResource和Class.getResource方法路径区别的问题。

    1. 绝对路径文件读取,最简单,最直接的方式

    	/**
    	 * 从绝对路径读取文件,最基本的文件读取方式
    	 * 
    	 * @author lihzh
    	 * @data 2012-4-11 下午9:33:44
    	 */
    	@Test
    	public void testGetFileFromAbsolutePath() {
    		String dirPathNotUnderClasspath = "D:\\workspace-home\\JavaDemo\\conf";
    		File dirFile = new File(dirPathNotUnderClasspath);
    		AssertDirFile(dirFile);
    	}
    
       /**
    	 * 对文件夹类型文件的断言
    	 * 
    	 * @param dirFile
    	 * @author lihzh
    	 * @data 2012-4-11 下午9:49:14
    	 */
    	private void AssertDirFile(File dirFile) {
    		// 文件存在
    		Assert.assertTrue(dirFile.exists());
    		// 是绝对路径
    		Assert.assertTrue(dirFile.isAbsolute());
    		// 是个文件夹
    		Assert.assertTrue(dirFile.isDirectory());
    		// 获取文件夹下所有文件
    		File[] files = dirFile.listFiles();
    		// 下面有文件
    		Assert.assertNotNull(files);
    		// 且只有一个
    		Assert.assertEquals(1, files.length);
    		// 文件名匹配
    		Assert.assertEquals("test.properties", files[0].getName());
    	}
    

    2. 相对于执行编译命令路径的方式读取

    	/**
    	 * 从相对路径读取文件,相对于编译路径,在Eclipse中即为工程所在根目录。 本质还是绝对路径读取。
    	 * 
    	 * @author lihzh
    	 * @data 2012-4-11 下午9:51:10
    	 */
    	@Test
    	public void testGetFileFromRelativePath() {
    		String dirPath = System.getProperty("user.dir") + "\\conf";
    		File dirFile = new File(dirPath);
    		AssertDirFile(dirFile);
    	}
    

    3. 用URI构造本地文件读取

       /**
    	 * 构造URI/URL格式的文件路径,读取本地文件
    	 * 
    	 * @author lihzh
    	 * @throws URISyntaxException
    	 * @throws MalformedURLException
    	 * @data 2012-4-11 下午10:25:00
    	 */
    	@Test
    	public void testGetFileFromURIPath() throws URISyntaxException,
    			MalformedURLException {
    		// 直接用URI构造, 由于URI和URL可以互转,所以如果为URL直接用URL.toURI转换成URI即可
    		URI uri = new URI("file:/D:/workspace-home/JavaDemo/conf/");
    		File dirFile = new File(uri);
    		AssertDirFile(dirFile);
    	}
    

    特别说明:</span>用URI/URL的方式构造路径是个人比较推荐的,可以解决一些路径读取的问题。例如:Spring会对URI/URL格式的路径进行专有处理可以准确定位的位置,而直接使用绝对路径,在用Classpath和FileSystem两种不同的初始化方式下,可能会出现错误。

    4. 利用ClassLoader读取Jar包内部文件

       /**
    	 * 从依赖的Jar包中读取文件, Jar包内的文件是无法用File读取的,只能用Stream的方式读取。
    	 * 
    	 * @author lihzh
    	 * @throws URISyntaxException
    	 * @throws IOException
    	 * @data 2012-4-11 下午11:07:58
    	 */
    	@Test
    	public void testGetFileFromJarInClassPath() throws URISyntaxException,
    			IOException {
    		Enumeration<URL> urls = this.getClass().getClassLoader().getResources("conf/test.properties");
    		URL url = this.getClass().getClassLoader().getResource("conf/test.properties");
    		Assert.assertTrue(urls.hasMoreElements());
    		Assert.assertNotNull(url);
    		// 注意两种不同调用方式的路径的区别,此处如果不以'/' 开头,会被当作相对于当前类所在的包类处理,自然无法找到。
    		// 因为在Class的getResource方法的开头,有一个resolveName方法,处理了传入的路径格式问题。而ClassLoader类里的
    		// getResource和getResources均无此处理。使用时候需要用心。
    		URL clzURL = this.getClass().getResource("/conf/test.properties");
    		URL nullURL = this.getClass().getResource("conf/test.properties");
    		Assert.assertNotNull(clzURL);
    		Assert.assertNull(nullURL);
    		URL thisClzURL = this.getClass().getResource("");
    		Assert.assertNotNull(thisClzURL);
    		// 开始读取文件内容
    		InputStream is = this.getClass().getResourceAsStream("/conf/test.properties");
    		Properties props = new Properties();
    		props.load(is);
    		Assert.assertTrue(props.containsKey("test.key"));
    		Assert.assertEquals("thisIsValue", props.getProperty("test.key"));
    	}
    

    5. 读取Jar内某路径下的所有文件

    	/**
    	 * 从ClassPath中的Jar包读取某文件夹下的所有文件
    	 * 
    	 * @author lihzh
    	 * @throws IOException 
    	 * @data 2012-4-13 下午10:22:24
    	 */
    	@Test
    	public void testGetFilesFromJarInClassPathWithDirPath() throws IOException {
    		String dirPath = "conf/";
    		URL url = this.getClass().getClassLoader().getResource(dirPath);
    		Assert.assertNotNull(url);
    		String urlStr = url.toString();
    		// 找到!/ 截断之前的字符串
    		String jarPath = urlStr.substring(0, urlStr.indexOf("!/") + 2);
    		URL jarURL = new URL(jarPath);
    		JarURLConnection jarCon = (JarURLConnection) jarURL.openConnection();
    		JarFile jarFile = jarCon.getJarFile();
    		Enumeration<JarEntry> jarEntrys = jarFile.entries();
    		Assert.assertTrue(jarEntrys.hasMoreElements());
    		Properties props = new Properties();
    		while (jarEntrys.hasMoreElements()) {
    			JarEntry entry = jarEntrys.nextElement();
    			// 简单的判断路径,如果想做到像Spring,Ant-Style格式的路径匹配需要用到正则。
    			String name = entry.getName();
    			if (name.startsWith(dirPath) && !entry.isDirectory()) {
    				// 开始读取文件内容
    				InputStream is = this.getClass().getClassLoader().getResourceAsStream(name);
    				Assert.assertNotNull(is);
    				props.load(is);
    			}
    		}
    		Assert.assertTrue(props.containsKey("test.key"));
    		Assert.assertEquals("thisIsValue", props.getProperty("test.key"));
    		Assert.assertTrue(props.containsKey("test.key.two"));
    		Assert.assertEquals("thisIsAnotherValue", props.getProperty("test.key.two"));
    	}
    

    对于不在ClassPath下的Jar包的读取,当作一个本地文件用JarFile读取即可。路径可使用绝对路径。或者用上面的url.getConnection也可以处理。这里不再实现。 希望对你有所帮助。

    展开全文
  • FileReader是File-API重要的组成部分 用于读取本地文件FileReader创建要想使用读取文件功能 同样需要实例化FileReader...其中4个指定文件读取方式 另1种方法用来中断文件读取 API 参数 描述 FileReader.readAs

    tip:有问题或者需要大厂内推的+我脉脉哦:丛培森 ٩( ‘ω’ )و

    【本文源址:http://blog.csdn.net/q1056843325/article/details/60147938 转载请添加该地址】

    FileReader是File-API重要的组成部分
    用于读取本地文件
    #FileReader
    ##创建
    要想使用读取文件功能
    同样需要实例化FileReader对象

    var fr = new FileReader();
    

    它为我们提供了一些接口方法和事件

    ##方法
    通过实例对象可以调用5个方法
    其中4个指定文件读取方式
    另1种方法用来中断文件读取

    |API|参数|描述
    |–|--|
    |FileReader.readAsBinaryString|File/Blob|文件读取为二进制字符串,每字节包含一个0到255之间的整数
    |FileReader.readAsText|File/Blob[,encoding]|文件读取为文本字符串。默认文本编码格式是’UTF-8’,可通过可选参数指定为其他编码格式
    |FileReader.readAsDataURL|File/Blob|文件读取为一个基于Base64编码的Data-URI对象
    |FileReader.readAsArrayBuffer|File/Blob|文件读取为一个ArrayBuffer对象
    |abort()|无|终止文件读取

    注:Blob(Binary Large Object)是二进制对象


    无论文件读取成功与否
    这些函数不会有任何返回值
    读取的文件结果存储于实例化的FileReader对象的result属性中

    #事件
    文件读取对象中除了上面的方法之外
    还包含一套完整的事件模型
    用于捕获在文件读取的各个状态

    • onloadstart : 开始读取
    • onprogress : 正在读取
    • onload : 读取成功
    • onerror : 读取错误
    • onabort : 读取中断
    • onloadend : 读取完成(无论成败)

    #使用
    现在我们使用这个Filereader来读取一个本地图像
    html如下
    简单创建了一个文件读取按钮input
    和一个用来显示所读取图片的img标签

    <input type="file" id="choose"><br><br>
    <img src="" id="image" width='200px' height='200px'>
    


    js脚本如下

    var choose = document.getElementById('choose');
    var img = document.getElementById('image');
    choose.onchange = function(){
      showImg(this, img);
    }
    function showImg(chooseDom, imgDom){
      var file = chooseDom.files[0]; //获取FileList对象的第一个元素——一个File对象
      var fr = new FileReader(); //实例化FileReader对象
      fr.onload = function(e){ 
        imgDom.src = e.target.result; //e.target引用fr
      }
      fr.readAsDataURL(file); //读取为DataURL
    }
    
    

    获取节点后
    为input标签绑定change事件
    这样当每次选择文件后,就会调用showImg函数进行读取

    验证读取内容可以检查file.type

    if(!/image\/\w+/.test(file.type)){  
        //...
        return false;  
    }  
    

    或者如果想要读取文字
    就是用readAsText

    <input type="file" id="choose"><br><br>
    <p id="demo"></p>
    
    var choose = document.getElementById('choose');
    var demo = document.getElementById('demo');
    choose.onchange = function(){
      showText(this, demo);
    }
    function showText(chooseDom, textDom){
      var file = chooseDom.files[0];
      var fr = new FileReader();
      fr.onload = function(e){
        textDom.innerHTML = e.target.result;
      }
      fr.readAsText(file);
    }
    

    #文件读取模块
    为了更好的处理文件读取
    我们需要封装一个文件读取模块

    //events事件回调对象包含success,load,progress
    var FileLoader = function (file, events) {
        this.reader = new FileReader();
        this.file = file;
        this.loaded = 0;
        this.total = file.size;
        this.step = 1024 * 1024;//每次读取1M
        this.events = events || {};
        this.bindEvent();
        this.readBlob(0);//读取第一块
    }
    FileLoader.prototype = {
        bindEvent: function (events) {
            var _this = this,
                reader = this.reader;
            reader.onload = function (e) {
                _this.onLoad();
            };
            reader.onprogress = function (e) {
                _this.onProgress(e.loaded);
            };
            // start、abort、error回调暂无
        },
        onProgress: function (loaded) {
            var percent,
                handler = this.events.progress;
            this.loaded += loaded;
            percent = (this.loaded / this.total) * 100;
            handler && handler(percent);
        },
        // 读取结束(每一次执行read结后调用)
        onLoad: function () {
            var handler = this.events.load;
            // 在此发送读取的数据
            handler && handler(this.reader.result);
            // 如果未读取完毕继续读取
            if (this.loaded < this.total) {
                this.readBlob(this.loaded);
            } else {
                // 读取完毕
                this.loaded = this.total;
                // 如果有success回调则执行
                this.events.success && this.events.success();
            }
        },
        // 读取文件内容
        readBlob: function (start) {
            var blob,
                file = this.file;
            // 若支持slice方法,则分步读取,不支持就一次性读取
            if (file.slice) {
                blob = file.slice(start, start + this.step + 1);
            } else {
                blob = file;
            }
            this.reader.readAsText(blob);
        },
        // 中止读取
        abort: function () {
            var reader = this.reader;
            if(reader) {
                reader.abort();
            }
        }
    }
    

    主页传送门

    展开全文
  • 任意文件读取

    千次阅读 2018-01-12 15:59:05
    任意文件读取是属于文件操作漏洞的一种,一般任意文件读取漏洞可以读取的配置信息甚至系统重要文件。严重的话,就可能导致SSRF,进而漫游至内网。步骤1:代码审计,分析原理我们已经知道,用户的头像显示,是使用...

    任意文件读取是属于文件操作漏洞的一种,一般任意文件读取漏洞可以读取的配置信息甚至系统重要文件。

    严重的话,就可能导致SSRF,进而漫游至内网。

    步骤1:代码审计,分析原理

    我们已经知道,用户的头像显示,是使用file_get_contents函数来读取的,而它读取的内容是从session里面获取的。那么session的值又是从哪里获取的?

    使用全局搜索法对其进行搜索:$_SESSION['avatar'],可以搜索到下面几个页面:

    logcheck.php,登录页面 regcheck.php,注册的页面 updateAvatar.php 上传页面

    我们着重查看updateAvatar.php里面的内容,代码如下:

    if (isset($_POST['submit']) &amp;&amp; isset($_FILES['upfile'])) {
    
     if(is_pic($_FILES['upfile']['name'])){
    
      $avatar = $uploaddir . '/u_'. time(). '_' . $_FILES['upfile']['name'];
    
      if (move_uploaded_file&amp;#40;$_FILES['upfile']['tmp_name'], $avatar&amp;#41;) {
       //更新用户信息
       $query = "UPDATE users SET user_avatar = '$avatar' WHERE user_id = '{$_SESSION['user_id']}'";
       mysql_query($query, $conn) or die('update error!');
       mysql_close($conn);
       //刷新缓存
       $_SESSION['avatar'] = $avatar;
       header('Location: edit.php');
      }
    

    在第11行,files变量拼接后,直接带入Sql语句查询,也没有sqlwaf的过滤。而且FILES变量也没有转义。这时候,只需要bypass掉单引号就可以注入了,因此可以通过注入去把它的路径改为我们想要的。

    我们的思路是这样的:图像显示读取的内容是session,而session,可以从登陆的地方获取到数据库信息,而上传的地方可以更改数据库的信息。那么如何修改,变成想要的路径,去读取任意文件呢?

    这时候就可以用到update的特性,它的特性是:可以进行多重设置,但只取最后一个值。例如:

    UPDATE users SET user_avatar = '1',user_avatar = '2' WHERE user_id = '1'
    

    因此,我们就可以不管前面的1,并使用单引号去闭合它,并设置2的内容,改为我们想要的路径。

    但是再看代码的第7行:它会判断文件名是否为图片后缀,因此还需要对其进行截断,继续构造语句:

    UPDATE users SET user_avatar = '1',user_avatar = '2' WHERE user_name = 'test'#.png
    

    因为我们并不知道参数的ID是多少,所以改为user_name。name即是我们的账户名,后面再修改为png格式。这样就可以成功的绕过。

    最终的payload为:

     ',user_avatar = '2' WHERE user_name = 'test'#.png
    

    只要将上传页面的数据包name值替换为我们构造好的payload,就可以成功的对数据库进行注入,插入我们构造的语句,从而达到任意文件读取的目的。 修复演示代码

    if (isset($_POST['submit']) &amp;&amp; isset($_FILES['upfile'])) {
    
     if(is_pic($_FILES['upfile']['name'])){
    
      $avatar = $uploaddir . '/u_'. time(). '_' . $_FILES['upfile']['name'];
    
      $avatar = sec($avatar);
    
      if (move_uploaded_file&amp;#40;$_FILES['upfile']['tmp_name'], $avatar&amp;#41;) {
       //更新用户信息
       $query = "UPDATE users SET user_avatar = '$avatar' WHERE user_id = '{$_SESSION['user_id']}'";
       // UPDATE users SET user_avatar = '1',user_avatar = '2' WHERE user_name = 'test'#.png
       // ',user_avatar = '2' WHERE user_name = 'test'#.png
       mysql_query($query, $conn) or die(mysql_error());
       mysql_close($conn);
       //刷新缓存
       $_SESSION['avatar'] = $avatar;
       header('Location: edit.php');
    

    对avatar变量进行了过滤,将单引号或其他敏感字符转换为斜杠,这样就修复了漏洞

    展开全文
  • python HDF文件读取

    万次阅读 2018-10-01 17:14:43
    python HDF 文件读取 HDF文件是地学研究中常用的数据格式,卫星数据的储存格式通常如此。下面以AVHRR 卫星数据为例,利用python 读取其数据 python 包 python 有专门针对hdf 文件读取的包 对于HDF4 以及以下来说...
  • matlab文件读取总结matlab的文件读取函数功能可以读取各种文件类型
  • Android 图片文件读取

    万次阅读 2015-05-14 22:32:43
    介绍图片文件读取所涉及到的各项技术点
  • golang文件读取-按行读取

    万次阅读 2018-01-25 16:49:15
    golang文件读取-按行读取 a.txt文件内容: ABCDEFGHI HELLO GOLANG package main import ( "fmt" "os" "io" "bufio" "strings" ) func main() { fileName := "C:\\Robert\\日志分析\\tools_go
  • 编程小知识之 JavaScript 文件读取

    千次阅读 多人点赞 2019-06-06 21:53:25
    文件读取在当今的编程语言中应该算是一项比较 trivial 的工作了,语言的标准库一般都会帮助我们做好文件抽象与读写缓存,我们仅需要熟悉和运用相关的 API 即可. 但是 JavaScript 由于安全性的原因,一直以来都没有提供...
  • 任意文件读取与下载漏洞

    千次阅读 2019-10-17 23:35:08
    前言 上周参加了一个线上赛。有个Web题的WriteUp说是任意文件下载。由于之前没学过,所以就没有想到。...任意文件读取是属于文件操作漏洞的一种,一般任意文件读取漏洞可以读取配置信息甚至系统重...
  • python 文件读取

    万次阅读 多人点赞 2018-07-24 17:16:18
    读取整个文件 操作文件的第一步就是得打开要操作的文件,然后进行读取。在python中我们可以使用open函数来打开一个文件,然后使用read方法来读取文件。 示例: import os with open('data.txt', encoding='utf-...
  • Swift 文件读取 和 写入

    千次阅读 2018-01-31 09:24:45
    Swift 文件读取 和 写入1 文件的读取
  • 使用FileInputStream 读取本地文件(图片、视频、音乐、文档资料) 二进制文件、文本文件 1.在物理存储上上没有什么区别,存在硬盘上都是以二进制方式存储 2.解释数据的逻辑不同,程序读取文本文件,可以以字符方式...
  • 任意文件读取下载漏洞

    万次阅读 2017-12-19 10:06:58
    任意文件读取下载漏洞漏洞原理
  • python .txt文件读取及数据处理总结

    万次阅读 多人点赞 2017-11-30 18:27:32
    1、处理包含数据的文件最近利用Python读取txt文件时遇到了一个小问题,就是在计算两个np.narray()类型的数组时,出现了以下错误: TypeError: ufunc 'subtract' did not contain a loop with signature matching ...
  • Tensorflow从文件读取数据

    万次阅读 2016-11-22 19:47:07
    文件读取数据: 在TensorFlow图的起始, 让一个输入管线从文件中读取数据。 预加载数据: 在TensorFlow图中定义常量或变量来保存所有数据(仅适用于数据量比较小的情况)。 使用Tensorflow训练神经网络模型,首先...
  • 当用pandas的read_csv函数或者是read_table函数读取文件时,如果遇到大的文件,需要分块读取,在这个基础上可以 读取指定行,比如读取标签全为0的行。 代码如下:   f = open(path + r'\train.csv') reader = ...
  • scala 读取txt文件(从文件读取

    万次阅读 2018-08-20 16:36:37
    文件格式分别如下 package txt object ReadTxt { def readFromTxtByLine(filePath:String) = { //导入Scala的IO包 import scala.io.Source //以指定的UTF-8字符集读取文件,...
  • golang文件读取-按指定BUFF大小读取

    千次阅读 2018-01-25 16:43:09
    golang文件读取-按指定BUFF大小读取 a.txt文件内容: ABCDEFGHI HELLO GOLANG package main import ( "fmt" "os" "io" ) func main() { fileName := "C:\\Robert\\日志分析\\tools_go\\vdn_sql...
  • python中文件读取方式

    万次阅读 2018-03-26 12:22:43
    参考《python编程:从入门到实践》和《python编程快速上手》先介绍最一般的python文本文件读取方法1.文件路径的获取文件路径包括绝对路径和相对路径。绝对路径指从根文件夹开始'E:\\a.txt'上述为绝对路径,所有...
  • Java IO之文件读取

    千次阅读 2018-07-25 19:41:05
    以BIO形式的文件读取和复制: public class MyReadFile { public static void main(String[] args){ try{ //第一步,定位数据源 File f=new File("c:/work/test.txt"); //第二布,建立...
  • 解决csv文件读取时第一列无法读取到的问题 在使用opencsv做csv文件导出与导入的时候,由于导入的csv文件带有bom标识,导致老是文件的第一列无法读取,下面贴出解决方法: 症状: 使用opencsv进行文件读取时,...
  • java文件读取的两种方式FileReader

    万次阅读 2018-07-27 12:09:07
    示例代码一,文件读取的第一种方式,示例代码二,文件读取的第二种方式,第二种是常用的,必须会。 /* * 对文件的读取一共有两种方式,先介绍第一种读取方式 * 步骤: * 1.创建文件读取流对象,和指定名称的...
  • PCD文件读取并显示

    万次阅读 2018-03-27 13:31:59
    前面一段时间一直在写论文,好久都没有进行编程...一个简单的点云pcd文件读取,并可视化。 /** Filename: pcd_read ** Date: 2018-3-27 **Description: Read PCD files &amp; point cloud visualization ...
  • 用 @Value("${xxxx}")注解从配置文件读取值的用法
  • 【Fortran】文件读取、写入(初级)

    万次阅读 多人点赞 2019-05-09 14:56:03
    总结了Fortran中简单的文件读取操作。
  • 关于:phpcms前台注入导致任意文件读取漏洞 的修复问题 阿里云服务器提示漏洞问题。
  • C#从文件读取 Stream

    千次阅读 2016-06-30 15:44:47
    /// <.../// 从文件读取 Stream //转载请注明来自 http://www.uzhanbao.com /// </summary> public Stream FileToStream(string fileName) { // 打开文件 FileStream fileStream = new ...
  • C语言文件读写操作,从文件读取数据
  • pandas入门——文件读取与写入

    千次阅读 2017-08-16 14:33:20
    文件读取与写入 读取文件 # 导入pandas与numpy包 import pandas as pd import numpy as np# 读取一个CSV文件 file_csv = pd.read_csv(filepath_or_buffer="D://NBA.csv",encoding="gbk")文件写入 # 将读取出来的文件...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 319,900
精华内容 127,960
关键字:

文件读取