Introduction to the usage of getResourceAsStream in Java
Using JAVA to obtain files sounds simple, but for many newcomers like me, it is still quite shallow and the experience of using it is quite profound. The most commonly used one is to use JAVA's File class. To obtain the c:/test.txt file, you will use File file = new File("c:/test.txt"); What is the problem with this use? I believe everyone knows that the path is hard-coded. For the JAVA spirit , the application should be formed once and available everywhere, and in terms of practical applications, the final generated application will also be deployed to operating systems other than Windows. For Linux, using the words c:/ in the application means failure. , so we should try to avoid using hard coding, that is, use absolute paths directly.
In the Servlet application, there is a getRealPath(String str) method. Although this method can also dynamically obtain the path of the file without directly handwriting the absolute path, this is also a method that is not recommended. , So, what methods do we have to get the file better?
That is the Class.getResource() and Class.getResourceAsStream() methods, but many people still don’t understand its usage, because many people (For example, me not long ago) didn't know what parameters should be passed to it. Of course, some people have already used it very well, and these people don't need to take care of it. Here I only give you some parameters that don't know how to use it or are not very good at it. Someone familiar with it can explain a little bit.
First of all, there are the following types of getResourceAsStream in Java:
1. Class.getResourceAsStream(String path): When the path does not start with '/', it defaults to the package where this class is located. Resources starting with '/' are obtained from the
ClassPath root. It just constructs an absolute path through path, and ultimately the resource is obtained by ClassLoader.
2. Class.getClassLoader.getResourceAsStream(String path): By default, it is obtained from the ClassPath root. The path cannot start with '/'. The resource is ultimately obtained by
ClassLoader.
3. ServletContext. getResourceAsStream(String path): By default, resources are fetched from the WebAPP root directory. It does not matter whether the path starts with '/' under Tomcat.
Of course, this is related to the specific container implementation. .
4. The application built-in object under Jsp is an implementation of the above ServletContext.
By the way, the class loader in JAVA:
There are three loaders in total
The loading order of a class is also based on the above arrangement, so as to ensure that the system classes can be loaded first.
At the same time, users can also define their own ClassLoader to load special resources.
This involves the difference between Class.getClassLoader() and Thread.currentThread.getContextClassLoader().
Give a simple example:
If one day JAVA provides us with a class called StartCamera to start the standard camera of the computer, and packages this class in a jar.
Under normal circumstances, when we want to start the camera, we only need to configure this jar into the classpath. The system classloader will load this class into the application when the system starts.
But because the camera manufacturers are different, there will be multiple different StartCamera implementations for new devices. In the application, we don’t know which one the actual users will use. So we customized a ClassLoader to load the corresponding StartCamera class for a specific device type.
This will appear: load the classes we defined first, and then load the system ones if they cannot be loaded. Such a demand cannot be met by the system's default parent delegate loading mechanism.
Thread.currentThread.getContextClassLoader() is generated in this way. We use Thread.currentThread.setContextClassLoader() to specify the corresponding ClassLoader for the current thread, and then obtain it using get.
The above is the detailed content of Introduction to the usage of getResourceAsStream in Java. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

PHP is a scripting language widely used on the server side, especially suitable for web development. 1.PHP can embed HTML, process HTTP requests and responses, and supports a variety of databases. 2.PHP is used to generate dynamic web content, process form data, access databases, etc., with strong community support and open source resources. 3. PHP is an interpreted language, and the execution process includes lexical analysis, grammatical analysis, compilation and execution. 4.PHP can be combined with MySQL for advanced applications such as user registration systems. 5. When debugging PHP, you can use functions such as error_reporting() and var_dump(). 6. Optimize PHP code to use caching mechanisms, optimize database queries and use built-in functions. 7

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHP is suitable for web development, with simple syntax and high execution efficiency. 2. Python is suitable for data science and machine learning, with concise syntax and rich libraries.

PHP is suitable for web development, especially in rapid development and processing dynamic content, but is not good at data science and enterprise-level applications. Compared with Python, PHP has more advantages in web development, but is not as good as Python in the field of data science; compared with Java, PHP performs worse in enterprise-level applications, but is more flexible in web development; compared with JavaScript, PHP is more concise in back-end development, but is not as good as JavaScript in front-end development.

PHP and Python each have their own advantages and are suitable for different scenarios. 1.PHP is suitable for web development and provides built-in web servers and rich function libraries. 2. Python is suitable for data science and machine learning, with concise syntax and a powerful standard library. When choosing, it should be decided based on project requirements.

The reasons why PHP is the preferred technology stack for many websites include its ease of use, strong community support, and widespread use. 1) Easy to learn and use, suitable for beginners. 2) Have a huge developer community and rich resources. 3) Widely used in WordPress, Drupal and other platforms. 4) Integrate tightly with web servers to simplify development deployment.

PHP is suitable for web development and content management systems, and Python is suitable for data science, machine learning and automation scripts. 1.PHP performs well in building fast and scalable websites and applications and is commonly used in CMS such as WordPress. 2. Python has performed outstandingly in the fields of data science and machine learning, with rich libraries such as NumPy and TensorFlow.

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

To become proficient when using Composer, you need to master the following skills: 1. Proficient in using composer.json and composer.lock files, 2. Understand how Composer works, 3. Master Composer's command line tools, 4. Understand basic and advanced usage, 5. Familiar with common errors and debugging techniques, 6. Optimize usage and follow best practices.
