Maison > Java > javaDidacticiel > le corps du texte

Comment lire des fichiers en utilisant des chemins relatifs en Java

coldplay.xixi
Libérer: 2020-09-02 13:06:00
original
13835 Les gens l'ont consulté

Comment utiliser les chemins relatifs pour lire des fichiers en Java : 1. Utilisez la méthode file [File file = new File(“src/test.txt”)] 2. Utilisez le chemin relatif de la classe ; 3. Utilisez le chargeur de classe du thread actuel ; 4. Lisez les fichiers sous le projet Web.

Comment lire des fichiers en utilisant des chemins relatifs en Java

[Recommandations d'apprentissage associées : Tutoriel de base Java]

Comment lire des fichiers en utilisant des chemins relatifs en Java :

1. Fichier simple et brut = new File("src/test.txt");

  @Test
    /**
     * 这种方法 “” 空代表的是 这个Java项目 TestSomeTechnology  由于实际项目在打包后没有src目录 所以这种方法不常用
     */
    public  void  testMethod1() throws IOException{
        File file = new File("src/test.txt");
        BufferedReader br = new BufferedReader(new FileReader(file));
        String len = null;
        while ((len=br.readLine())!=null){
            System.out.println(len);
        }
    }
Copier après la connexion

2. Utilisez le chemin relatif de la classe

TestRelativePath.class.getResource(“/test.txt”).getFile()

 @Test
    /**
     * 使用类的相对路径
     * 这种方法 “/” 代表的是bin。  src文件夹和resources 文件夹下的的东西都会被加载到bin下面 因为这两个文件被配置为了source
     */
    public  void  testMethod2() throws IOException{
        File file = new File(TestRelativePath.class.getResource("/test.txt").getFile());
        BufferedReader br = new BufferedReader(new FileReader(file));
        String len = null;
        while ((len=br.readLine())!=null){
            System.out.println(len);
        }
    }
Copier après la connexion

3. Utilisez le chargeur de classe du thread actuel

Thread.currentThread().getContextClassLoader().getResource("test.txt").getFile()

@Test
    /**
     * 这种是通过当前线程的类加载器
     * 这种方法 “ ” 空代表的是bin 。 于是就直接填写test,文件夹下的的东西都会被加载到bin下面,因为这两个文件被配置为了source
     */
    public  void  testMethod3() throws IOException{
        File file = new File(Thread.currentThread().getContextClassLoader().getResource("test.txt").getFile());
        BufferedReader br = new BufferedReader(new FileReader(file));
        String len = null;
        if ((len=br.readLine())!=null){
            System.out.println(len);
        }
    }
Copier après la connexion

4. Lisez les fichiers sous le projet Web et utilisez getRealPath() pour lire le répertoire

comme suit :

Comment lire des fichiers en utilisant des chemins relatifs en Java

Lisez index.jsp

@WebServlet(name = "TestServlet",urlPatterns = "/TestServlet")
public class TestServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request,response);
    }
    /**
     *  web工程的根目录是 webRoot, 使用 “/” 代表webroot webroot下面有index.jsp文件
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        File file = new File(getServletContext().getRealPath("/index.jsp"));
        BufferedReader br = new BufferedReader(new FileReader(file));
        String len = null;
        while ((len=br.readLine())!=null){
            System.out.println(len);
        }
    }
}
Copier après la connexion

Lisez le fichier test.txt

Mais si nous voulons lire test.txt, nous pouvons utiliser la méthode ci-dessus

 File file = new File(Thread.currentThread().getContextClassLoader().getResource("test.txt").getFile());
Copier après la connexion

ou vous pouvez utiliser getRealPath()

Cependant, puisque la webroot est le répertoire racine, nous devons le lire à partir des classes : les classes d'idea sont équivalentes au chemin de classe d'Esclipse. Description des classes :

Comment lire des fichiers en utilisant des chemins relatifs en Java

Code :

File file = new File(getServletContext().getRealPath("/WEB-INF/classes/test.txt"));
Copier après la connexion

explication détaillée de la méthode getResourceAsStream()

utilisation de getResourceAsStream() et la méthode getResouce() est la même. Après avoir utilisé getResource() pour obtenir le fichier File, new FileInputStream(file) a le même effet que getResourceAsStream(). .

Les deux codes ont le même effet

InputStream inputStream1 = new FileInputStream(new File(Thread.currentThread().getContextClassLoader().getResource("test.txt").getFile()));
InputStream inputStream2 = Thread.currentThread().getContextClassLoader().getResourceAsStream("test.txt");
Copier après la connexion

Recommandations associées : Cours vidéo de programmation

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal