java 实现读取txt文件,反射创建对象,android 手机缓存文件目录

简介: java 实现读取txt文件,反射创建对象,android 手机缓存文件目录

java 实现读取txt文件,反射创建对象



目录:


目的通过修改txt文件内容创建不同的对象,输出不同的记录;


8bd88ab1b163493399487b00f5b60233_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


上代码:


public class BaseBt {
    public BaseBt() {
        System.out.println("BaseBt构造");
    }
    public void disPlay(){
        System.out.println("BaseBt");
    }
}

public class CircularBt  extends BaseBt{
    public void disPlay(){
        System.out.println("CircularBt");
    }
}

public class SquareBt extends BaseBt{
    public void disPlay(){
        System.out.println("SquareBt");
    }
}

public class TriangleBt extends BaseBt{
    public void disPlay(){
        System.out.println("TriangleBt");
    }
}

package button;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
/**
 * @ProjectName: ArcfaceDemo
 * @Package: button
 * @ClassName: txttest
 * @Description: java类作用描述
 * @Author: 作者名
 * @CreateDate: 2021/9/28 0028 下午 10:43
 * @UpdateUser: 更新者:
 * @UpdateDate: 2021/9/28 0028 下午 10:43
 */
public class txttest {
    /**
     * 读取txt文件的内容
     * @param file 想要读取的文件对象
     * @return 返回文件内容
     */
    ///C:\butType.txt
    public static String txt2String(File file){
        StringBuilder result = new StringBuilder();
        try{
            BufferedReader br = new BufferedReader(new FileReader(file));//构造一个BufferedReader类来读取文件
            String s = null;
            while((s = br.readLine())!=null){//使用readLine方法,一次读一行
//                result.append(System.lineSeparator()+s);
                result.append(s);
            }
            br.close();
        }catch(Exception e){
            e.printStackTrace();
        }
        return result.toString();
    }
    public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
        File file = new File("C:\butType.txt");
        String byTypeClass=txt2String(file);
        System.out.println(byTypeClass);
        BaseBt baseBt = (BaseBt) Class.forName(byTypeClass).newInstance();
        baseBt.disPlay();
    }
}

ddb0ba018f284f09a37f812989c48477_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


什么是java反射



JAVA反射机制


Java的反射(reflection)机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。这种动态获取程序信息以及动态调用对象的功能称为Java语言的反射机制。**反射被视为动态语言的关键。 **


Java反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。 有时候我们说某个语言具有很强的动态性,有时候我们会区分动态和静态的不同技术与作法。动态绑定(dynamic binding)、动态链接(dynamic linking)、动态加载(dynamic loading)等。然而“动态”一词其实没有绝对而普遍适用的严格定义,有时候甚至像面向对象当初被导入编程领域一样,一人一把号,各吹各的调。 一般而言,开发者社群说到动态语言,大致认同的一个定义是:“程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言”。


  • Perl,Python,Ruby是动态语言
  • C++,Java,C#不是动态语言。


尽管在这样的定义与分类下Java不是动态语言,它却有着一个非常突出的动态相关机制:Reflection。这个字的意思是“反射、映象、倒影”,用在Java身上指的是我们可以于运行时加载、探知、使用编译期间完全未知的classes。换句话说,Java程序可以加载一个运行时才得知名称的class,获悉其完整构造(但不包括methods定义),并生成其对象实体、或对其fields设值、或唤起其methods。这种“看透class”的能力(the ability of the program to examine itself)被称为introspection(内省、内观、反省)。Reflection和introspection是常被并提的两个术语。 Java如何能够做出上述的动态特性呢?这是一个深远话题,本文对此只简单介绍一些概念。整个篇幅最主要还是介绍Reflection APIs,也就是让读者知道如何探索class的结构、如何对某个“运行时才获知名称的class”生成一份实体、为其fields设值、调用其methods。本文将谈到java.lang.Class,以及java.lang.reflect中的Method、Field、Constructor等等classes。


java.lang.ClassNotFoundException



使用Class.forName(byTypeClass).newInstance();过程中总是不行,一定要进行debug;发现路径不对;对了/n;


d7e544db8fe243a2918c03e5de136e29_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png

AS运行main()方法报错:SourceSet with name ‘main’ not found


fa1eae2aa25e4008bac35e61a432ea48_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


解决方法:在.idea文件夹下的gradle.xml文件中添加

然后重新运行就可以了


c3c1eb8d9a5a424bb320fa9308ef3031_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


json文件优势



{
"code": "0000",
"data": {
"biRate": "0.32",
"carInfoByPython": {
"code": "0000",
"data": {
"biEndDate": "2018-10-05",
"brandName": "长安SC7162A4轿车",
"carkindCode": "客车",
"ciEndDate": "2018-10-05",
"companyCode": "picc",
"damageBi": 0,
"damageCi": 0,
"engineNo": "84BE17915",
"enrollDate": "2008-10-07",
"fuelType": "A ",
"result": true
}


Context 的意思和作用



我是通过两个例子才理解的;


一个是Android中assert的资源文件;


83387dfd86fb44328b13ceb0dde75a2f_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


加载方式:AssetManager assetManager = context.getAssets();

android 打包apk将assert打包进apk,上下文就是手机中安装包目录;


第二种写java 通过main 方法调用本地文件


不需要写上下文,你的电脑环境就是你的上下文;


c43f2aeaf29d448ea23a1d1e195dbc33_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


Android文件系统管理— /storage/emulated/0/Android/data/{packgename}



/mnt/sdcard/Android/data/com.zhongxin.learninglibrary/cache/header_image/data/data/com.zhongxin.learninglibrary


ce29851856434c63900ec535c4a58b94_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png8ff368a4d9e04fc092880c8eafa157b3_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


1996998a4381412896fe4dea4b78ac11_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


相关文章
|
5月前
|
Java Unix Go
【Java】(8)Stream流、文件File相关操作,IO的含义与运用
Java 为 I/O 提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中。!但本节讲述最基本的和流与 I/O 相关的功能。我们将通过一个个例子来学习这些功能。
256 1
|
8月前
|
监控 Java API
Java语言按文件创建日期排序及获取最新文件的技术
这段代码实现了文件创建时间的读取、文件列表的获取与排序以及获取最新文件的需求。它具备良好的效率和可读性,对于绝大多数处理文件属性相关的需求来说足够健壮。在实际应用中,根据具体情况,可能还需要进一步处理如访问权限不足、文件系统不支持某些属性等边界情况。
393 14
|
9月前
|
存储 Java 数据安全/隐私保护
Java技术栈揭秘:Base64加密和解密文件的实战案例
以上就是我们今天关于Java实现Base64编码和解码的实战案例介绍。希望能对你有所帮助。还有更多知识等待你去探索和学习,让我们一同努力,继续前行!
600 5
|
8月前
|
存储 Java 编译器
深入理解Java虚拟机--类文件结构
本内容介绍了Java虚拟机与Class文件的关系及其内部结构。Class文件是一种与语言无关的二进制格式,包含JVM指令集、符号表等信息。无论使用何种语言,只要能生成符合规范的Class文件,即可在JVM上运行。文章详细解析了Class文件的组成,包括魔数、版本号、常量池、访问标志、类索引、字段表、方法表和属性表等,并说明其在Java编译与运行过程中的作用。
251 0
|
8月前
|
存储 人工智能 Java
java之通过Http下载文件
本文介绍了使用Java实现通过文件链接下载文件到本地的方法,主要涉及URL、HttpURLConnection及输入输出流的操作。
604 0
|
9月前
|
网络协议 安全 Java
实现Java语言的文件断点续传功能的技术方案。
像这样,我们就完成了一项看似高科技、实则亲民的小工程。这样的技术实现不仅具备实用性,也能在面对网络不稳定的挑战时,稳稳地、不失乐趣地完成工作。
497 0
|
前端开发 Cloud Native Java
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
|
存储 算法 Java
解锁“分享文件”高效密码:探秘 Java 二叉搜索树算法
在信息爆炸的时代,文件分享至关重要。二叉搜索树(BST)以其高效的查找性能,为文件分享优化提供了新路径。本文聚焦Java环境下BST的应用,介绍其基础结构、实现示例及进阶优化。BST通过有序节点快速定位文件,结合自平衡树、多线程和权限管理,大幅提升文件分享效率与安全性。代码示例展示了文件插入与查找的基本操作,适用于大规模并发场景,确保分享过程流畅高效。掌握BST算法,助力文件分享创新发展。
|
Java API 数据处理
深潜数据海洋:Java文件读写全面解析与实战指南
通过本文的详细解析与实战示例,您可以系统地掌握Java中各种文件读写操作,从基本的读写到高效的NIO操作,再到文件复制、移动和删除。希望这些内容能够帮助您在实际项目中处理文件数据,提高开发效率和代码质量。
533 4
|
存储 缓存 Java
Java中的分布式缓存与Memcached集成实战
通过在Java项目中集成Memcached,可以显著提升系统的性能和响应速度。合理的缓存策略、分布式架构设计和异常处理机制是实现高效缓存的关键。希望本文提供的实战示例和优化建议能够帮助开发者更好地应用Memcached,实现高性能的分布式缓存解决方案。
271 9