Avatar billede vedikkebedre Nybegynder
30. september 2004 - 14:35 Der er 15 kommentarer og
1 løsning

Find folder på Unix

Hejsa

Jeg vil gerne kunne finde en folder på min unix-maskine, og få vist stien i et tekstfelt.

Lidt lige som at browse rundt på ens maskine i Explorer og se addressen ændre sig.

Kan dette lade sig gøre....?  og i fald hvordan....?

mvh
vedikkebedre
Avatar billede arne_v Ekspert
30. september 2004 - 14:40 #1
Hvis din server config tillader det så var det vis oplagt at fyre
en Runtime.getRuntime().exec() af med en find / -name xxxx kommando
læse output fra den process og displaye det i den genererede HTML.
Avatar billede vedikkebedre Nybegynder
30. september 2004 - 14:47 #2
Ikke helt forstået.....

Det jeg gerne vil er at give brugerne mulighed for at kunne navigerer ned til en folder via en popup. Når brugeren så vælger den pågældende ved at trykke på "OK" (formoder at kiunne benytte dobbelclick som værende "jeg vil længere ned").

Det du antyder er mere i retning af - jeg vil gerne have stien til denne her specifikke folder - korrekt?

mvh
vedikkebedre
Avatar billede arne_v Ekspert
30. september 2004 - 14:49 #3
Jeg tog ligesom udgangspunbkt i "finde en folder".
Avatar billede arne_v Ekspert
30. september 2004 - 14:50 #4
Men er det grundliggende en directory browser du vil have som bare viser
directory tydeligt foroven ?
Avatar billede vedikkebedre Nybegynder
30. september 2004 - 15:02 #5
ja - en directory browser til en unix server
Avatar billede arne_v Ekspert
30. september 2004 - 19:50 #6
Prøv den her dir.jsp:

<%@page import="java.io.*"%>
<%
      String dirstr = request.getParameter("dir");
      if(dirstr == null) {
          dirstr = "/";
      }
%>
<H1><%=dirstr%>:</H1>
<%
      File dir = new File(dirstr);
      String[] dirlist = dir.list();
      for (int i = 0; i < dirlist.length; i++) {
        if((new File(dirstr + dirlist[i]  + File.separator)).isDirectory()) {
%>
<A HREF="dir.jsp?dir=<%=dirstr+dirlist[i]+File.separator%>"><%=dirlist[i]%></A><BR>
<%
        } else {
%>
<%=dirlist[i]%><BR>
<%
        }
      }
%>
Avatar billede arne_v Ekspert
30. september 2004 - 19:50 #7
Avatar billede arne_v Ekspert
30. september 2004 - 19:51 #8
Og jeg håber at du er opmærksom på security aspektet.
Avatar billede vedikkebedre Nybegynder
05. oktober 2004 - 14:16 #9
Hejsa

Har lige prøvet med følgende:

<%@ page language="java" contentType="text/html; charset=UTF-8"%>

<html>
<head>


<TITLE>FindFolder</TITLE>
</head>
<body>

<%@page import="java.io.*"%>
<%
      String dirstr = "/templatedata/folder/skabelon/data/";
      if(dirstr == null) {
          dirstr = "/";
      }
%>
<H1><%=dirstr%>:</H1>
<%
      File dir = new File(dirstr);
      String[] dirlist = dir.list();
      for (int i = 0; i < dirlist.length; i++) {
        if((new File(dirstr + dirlist[i]  + File.separator)).isDirectory()) {
%>
<A HREF="dir.jsp?dir=<%=dirstr+dirlist[i]+File.separator%>"><%=dirlist[i]%></A><BR>
<%
        } else {
%>
<%=dirlist[i]%><BR>
<%
        }
      }
%>

</body>
</html>


men får følgende fejl:

Error: 500
Location: /iw/webdesk/framework/widgets/hierbrowser/findfolder.jsp
Internal Servlet Error:

javax.servlet.ServletException
    at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:459)
    at framework.widgets.hierbrowser._0002fframework_0002fwidgets_0002fhierbrowser_0002fnnit_0005ffindfolder_0002ejspnnit_0005ffindfolder_jsp_7._jspService(_0002fframework_0002fwidgets_0002fhierbrowser_0002fnnit_0005ffindfolder_0002ejspnnit_0005ffindfolder_jsp_7.java:142)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:119)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    at org.apache.jasper.servlet.JspServlet$JspCountedServlet.service(JspServlet.java:130)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:282)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:429)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:500)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    at org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java:405)
    at org.apache.tomcat.core.Handler.service(Handler.java:287)
    at org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)
    at org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:797)
    at org.apache.tomcat.core.ContextManager.service(ContextManager.java:743)
    at org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpConnectionHandler.java:213)
    at org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoint.java:423)
    at org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPool.java:501)
    at java.lang.Thread.run(Thread.java:484)

Root cause:
java.lang.NullPointerException
    at framework.widgets.hierbrowser._0002fframework_0002fwidgets_0002fhierbrowser_0002fnnit_0005ffindfolder_0002ejspnnit_0005ffindfolder_jsp_7._jspService(_0002fframework_0002fwidgets_0002fhierbrowser_0002fnnit_0005ffindfolder_0002ejspnnit_0005ffindfolder_jsp_7.java:99)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:119)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    at org.apache.jasper.servlet.JspServlet$JspCountedServlet.service(JspServlet.java:130)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:282)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:429)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:500)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    at org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java:405)
    at org.apache.tomcat.core.Handler.service(Handler.java:287)
    at org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)
    at org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:797)
    at org.apache.tomcat.core.ContextManager.service(ContextManager.java:743)
    at org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpConnectionHandler.java:213)
    at org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoint.java:423)
    at org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPool.java:501)
    at java.lang.Thread.run(Thread.java:484)



Nogle forslag??

mvh
vedikkebedre
Avatar billede arne_v Ekspert
05. oktober 2004 - 14:22 #10
Den skal jeg vist lige tygge på
Avatar billede vedikkebedre Nybegynder
05. oktober 2004 - 15:26 #11
Har fået det løst - nu skal jeg "bare" have det bygget pænt op således at man kan finde rundt i det og få returneret en sti til "opener" siden.

For de nysgerrige er koden som følger:

<%@ page language="java" contentType="text/html; charset=UTF-8"%>

<html>
<head>


<TITLE>findfolder</TITLE>
</head>
<body>
<%@page import="java.io.File"%>


<%       
      String dirstr = request.getParameter("dir");
      if(dirstr == null) {
          dirstr = "/default/main/";
      }
%>
<H1><%=dirstr%>:</H1>
<%
try {
      File dir = new File(dirstr);
      File[] dirlist = dir.listFiles();

      if (dir.isDirectory()) {
        for (int i = 0; i < (dir.list()).length; i++) {
            if( (dirlist[i].isDirectory()) ) {
%>
            <A HREF="findfolder.jsp?dir=<%=dirlist[i]+File.separator%>"><%=dirlist[i]%></A><BR>
<%
            }
        }
      }
    }
catch (Exception e) {
}
%>
</body>
</html>
Avatar billede arne_v Ekspert
05. oktober 2004 - 15:32 #12
Hvad mener du med en sti til åbner siden ?

Hvis du kalder siden uden dir parameter, så åbner den vel top dir ...
Avatar billede vedikkebedre Nybegynder
07. oktober 2004 - 16:43 #13
Hej Arne

Tak for hjælpen.

Har du en god måde hvordan man kan sortere et array med alle resultaterne i?

Jeg har nemlig lavet 2 arrays - 1 med folders, og 1 med filer.
Nu vil jeg gerne have dem sorteret alfabetisk.

Array'erne er fylodt op med String's

mvh
vedikkebedre

P.s. "Opener" var den side som jeg tænkte på skulle kalde et pop-up-vindue hvor man kunne browse rundt, trykke OK, og så komme tilbage til den oprendelige side. Men dog opdateret i forhold til den folder man lige har browset sig frem til
Avatar billede vedikkebedre Nybegynder
07. oktober 2004 - 17:02 #14
Hej Arne

Kan tilføje at mit array har tomme pladser.

Dette skyldes at jeg ikke kender antallet af filer inden jeg skal instantierer mit array. Så jeg starter med at sige at mit array skal have samme størrelse som alle de filer der er i hele mappen - altså både foldere og filer.

Så når jeg så deler de elementer op i 2 arrays - vil der være tomme pladser i dem begge.

Så jeg kan ikke bruge Arrays.sort(myfolders);

mvh
vedikkebedre
Avatar billede arne_v Ekspert
07. oktober 2004 - 20:38 #15
Umiddelbart vil mit forslag være at smide dem over i en ArrayList og så
konvertere den til et array !
Avatar billede arne_v Ekspert
07. oktober 2004 - 20:40 #16
Et stykke kode hapset fra en anden sammenhæng:

      List parts = new ArrayList();
      parts.add("cmd");
      parts.add("/c");
      parts.add("dir");
      parts.add("C:\\eclipse");
      parts.add(">");
      parts.add("C:\\z.z");
      String[] sa = new String[parts.size()];
      parts.toArray(sa);

[det er ikke filnavne, men hvad data indeholder er ligegyldigt - teknikken er den
samme]
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester