Java file operations Daquan 1: the establishment of documents, checks and delete
Abstract: Java file operations Daquan 1: the establishment of documents, checks and delete
</ Td> </ tr> <tr> <td width="443" height="35" valign="top" class="ArticleTeitle"> <% @ page contentType = "text / html; gb2312 charset ="% >
<% @ Page import = "java.io. *"%>
<head>
</ Head>
<body>
<%
String path = request.getRealPath ( "/ article/article5a/example/filetest");
Out.println (path + "
");
File f = new File (path, "File.txt");
Out.println (f + "
");
/ / Out.println (f.exists ());
If (f.exists ()){// check whether there File.txt
F.delete ();// delete documents File.txt
Out.println (path + "\ \ File.txt exist, has been deleted.");
Else ()
F.createNewFile ();// under the current directory creation of a document entitled File.txt
Out.println (path + "\ \ File.txt did not exist, the current output has been established 。");// the directory path
)
%>
</ Td> <td width="264" valign="top" class="ArticleTeitle">
</ Td> </ tr> <tr> <td height="25" colspan="2" valign="top" class="ArticleTeitle">
↑ Back
Jsp pages in the documents obtained absolute path
Abstract: In the jsp page document obtained absolute path
</ Td> </ tr> <tr> <td height="35" valign="top" class="ArticleTeitle"> If we cwb.mdb database files (or other resources picture, sound) on the d: \ Tomcat 5.0 \ webapps \ WEB-INF \ Below,
Well, jsp pages can connect to:
String strurl = "jdbc: odbc: driver = (Microsoft Access Driver (*. mdb)); DBQ = D: \ \ Tomcat 5.0 \ \ webapps \ \ zz3zcwbwebhome \ \ WEB-INF \ \ cwb.mdb";
But this will be the path hard-coded resources in the code, once we have the WEB application move, or change directory, we will have to look for these resources include all jsp to change path. Solution is added directly to each of WEB application to / URL prior to the start. This is not hard-coded name. But the use of getServletContext (). GetRealPath ("/") methods identified in the implementation of this title.
<% @ Page contentType = "text / html; GBK charset ="%>
<% @ Page language = "java" import = "java.sql .*"%>
<table Width="722" height="32" border="0"> <tr> <td width="454"> <%
String aa = getServletContext (). GetRealPath ("/")+" WEB-INF \ \ cwb.mdb ";
String strurl = "jdbc: odbc: driver = (Microsoft Access Driver (*. mdb)); DBQ =" + aa;
Out.println ( "path =" + + strurl "
");
Class.forName ( "sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn = DriverManager.getConnection (strurl);
Statement stmt = conn.createStatement ();
ResultSet rs = stmt.executeQuery ( "select * from Article");
If (rs.next ())
Out.println ( "OK! Size =" + rs.getString ( "Article_size"));
Rs.close ();
Stmt.close ();
Conn.close ();
%>
</ Td> <td width="258"> </ td> </ tr> </ table>
</ Td> </ tr> <tr>
↑ Back
Using JSP download word documents (not the direct use of open IE)
Abstract: JSP download word documents (not the direct use of open IE)
</ Td> </ tr> <tr> <td height="35" valign="top" class="ArticleTeitle"> <table width="684" border="0"> <tr> <td width = " 402 "> <% @ page import =" java.util .*"%>
<% @ Page import = "java.io. *"%>
<% @ Page import = "java.net .*"%>
<%
String filename = "";
If (request.getParameter ( "file")! = Null) (
Filename = request.getParameter ( "file");
)
Response.setContentType ( "application / msword");
Response.setHeader ( "Content-disposition", "attachment; filename =" + filename);
</ Td> <td width="272" align="center"> </ td> </ tr> </ table>?
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
Try (
Bis = new BufferedInputStream (new FileInputStream (getServletContext (). GetRealPath ( "/ dir1/dir2 /" + filename)));
Bos = new BufferedOutputStream (response.getOutputStream ());
Byte [] = new byte buff [2048];
Int bytesRead;
While (-1! = (BytesRead = bis.read (buff, 0, buff.length))) (
Bos.write (buff, 0, bytesRead);
)
) Catch (final IOException e) (
Out.println ( "IOException." + E);
Finally ()
If (bis! = Null)
Bis.close ();
If (bos! = Null)
Bos.close ();
)
Return;
%> Function TempSave (ElementID) (CommentsPersistDiv.setAttribute ( "CommentContent" document.getElementById (ElementID). Value); CommentsPersistDiv.save ( "CommentXMLStore");) function Restore (ElementID) (CommentsPersistDiv.load ( "CommentXMLStore") ; document.getElementById (ElementID). CommentsPersistDiv.getAttribute value = ( "CommentContent");) </ td> </ tr> <tr>
↑ Back
Read documents from the Servlet
Abstract: The paper read Servlet
</ Td> </ tr> <tr> <td height="35" valign="top" class="ArticleTeitle"> <table width="677" height="24" border="0"> <tr> <td width="396"> / / read documents from the Servlet
Package examples;
Import java.io. *;
Import javax.servlet .*;
Import javax.servlet.http .*;
Public class ReadingServlet extends HttpServlet (
Private static final String CONTENT_TYPE = "text / html";
Private StringBuffer strBuf;
Private String header;
Public void init (ServletConfig config) throws ServletException (
Super.init (config);
ServletContext context = config.getServletContext ();
StrBuf = new StringBuffer ();
Try (
</ Td> <td width="271">
</ Td> </ tr> </ table>
BufferedReader bufRead = new BufferedReader (new InputStreamReader (
(Context.getResourceAsStream ( "readme.txt "))));// this readme.txt Add to your web application's root directory
BufferedReader bufRead1 = new BufferedReader (new InputStreamReader (
(GetClass (). GetResourceAsStream ( "readme.txt "))));// this readme.txt together with the types of documents
While (bufRead.read ()!=- 1) (
StrBuf.append (bufRead.readLine ());
)
While (bufRead1.read ()!=- 1) (
StrBuf.append (bufRead1.readLine ());
)
BufRead.close ();
BufRead1.close ();
) Catch (IOException ioe) (
Ioe.printStackTrace ();
)
Header = strBuf.toString ();
)
Public void doPost (HttpServletRequest request, HttpServletResponse response)
Throws IOException, ServletException (
PrintWriter out = response.getWriter ();
Response.setContentType ( "text / html");
Out.println ("");
Out.println ( "" + + header, "");
)
Public void doGet (HttpServletRequest request, HttpServletResponse response)
Throws IOException, ServletException (
DoPost (request, response);
)
) </ Td> </ tr> <tr>
↑ Back
The directory lists specific types of documents
Abstract: The directory lists the specific types of documents
</ Td> </ tr> <tr> <td height="35" valign="top" class="ArticleTeitle"> java.io.File object list (FilenameFilter ff) method can be flexibly listed in the catalog document, which is a FilenameFilter interface, it only one way: boolean accept (File inDir, String fileName). Below procedures set out under the current directory of all java, class, the jar file.
<table Width="678" border="0"> <tr> <td width="487">
Import java.io. *;
(Public class FNFilter
Public static void main (String argh_my_aching_fingers []) (
String [] dir = new java.io.File ("."). list (new OnlyJava ());
Java.util.Arrays.sort (dir);
For (int i = 0; i
)
)
(Class OnlyJava implements FilenameFilter
Public boolean accept (File dir, String s) (
If (s.endsWith (. "Java") | | s.endsWith (. "Class") | | s.endsWith (. "Jar"))
Return true;
Return false;
)
)
The result:
C: \ java> java FNFilter
BuzzInServlet.class
BuzzInServlet.java
Cdb.java
FNFilter.class
FNFilter.java
JspCalendar.class
JspCalendar.java
OnlyJava.class
TempFiles.class
TempFiles.java
Activation.jar
Jdom.jar
Mail.jar
Mm.mysql-2.0.14-bin.jar
Xerces.jar
C: \ java> </ td> <td width="181" valign="top"> </ td> </ tr> </ table> </ td> </ tr> <tr>
↑ Back
Wildcards priority support the breadth of the documents View
Abstract: the breadth of support wildcards priority documents View
</ Td> </ tr> <tr> <td height="35" valign="top" class="ArticleTeitle"> <table width="733" border="0"> <tr> <td> </ td> </ tr> </ table>
View the general operation of the paper used recursive algorithm, and recursive algorithm actually a "depth-first" strategy. In practice, the system often find the documents from the folder to find the last folder and it is, therefore, based on the "breadth-first" algorithm of the efficiency of document View obvious priority in the "recursive" algorithm. Wildcards achieve here based on the support of the "breadth-first" algorithm documents View operation. Char c = pattern.charAt (patternIndex); C: \ java> JAVA BFSFileSearch C: \ java> </ Td> </ tr> <tr>
↑ Back Abstract: The socket in the documents between the two men - </ Td> </ tr> <tr> <td width="421" height="35" valign="top" class="ArticleTeitle"> use between two-socket in the document. (Document acceptable to the first directory to create acceptable) ↑ Back Abstract: access to the class of documents absolute path </ Td> </ tr> <tr> <td height="35" valign="top" class="ArticleTeitle"> <table width = "100%" border = "0" cellspacing = "0" cellpadding = " 0 "> <tr> <td width="282" height="86" align="center" valign="top"> </ td> <td width="402" valign="top">
In java, often positioning the location of certain documents, in order to allow procedures and physical location irrelevant to the use of a relative path. However, the use of a relative path java always encountered some very troublesome issues, which is in the end of reference for the issue. Because we usually use a relative path is always relative in terms of the current working directory, but sometimes demand is not the case. For example, in a development kit used in the relative path, but do not know development kits by other procedures at the time of call of the path, and particularly in the web application, it is difficult to establish a file in the application of a relative path. Therefore, the use of a relative path is the best way to the relative reference is the path of my development kits or my application itself things, the best thing is to use my development kits in the class of documents. Know if a certain class of documents absolute path, we can take it for reference, the use of a relative path to locate any other documents. </ Td> </ tr> </ table>
In order to achieve this idea, and I wrote this Path class that provides two public static methods, such as positioning for a class file, and another to a certain category is the reference to locate a relative path. Use of the two methods, we can not totally ignore the work of the current path, according to their own arbitrary location to find any documents. For example, in the preparation of a functional development kit, it could not complete the call of the application development kits path, but only under development kits positioning itself to the position paper, the realization of such a good package, the documents be fully closed in the path of the development kits of their own. Following is the Path of the source code: * Create Date 2004-11-22 Import java.io.File; / ** / ** / ** If (result! = Null) ( If (result == null) ( Public static void main (String [] args) ( Running Results: C: \ java \ com> java Path ↑ Back Abstract: The paper example lock </ Td> </ tr> <tr> <td height="35" valign="top" class="ArticleTeitle"> <table width = "100%" border = "0" cellspacing = "0" cellpadding = " 0 "> <tr> <td width="282" height="86" align="center" valign="top"> </ td> <td width="402" valign="top"> import java.nio . channels .*;
/ ** (Public class LockFile Public static void main (String [] args) throws Exception ( </ Td> </ tr> </ table>
RandomAccessFile raf = new RandomAccessFile (new File ( "c: \ \ test.txt"), "rw"); FileChannel fc = raf.getChannel (); FileLock fl = fc.tryLock (); if (fl.isValid () ) (System.out.println ( "get the lock!"); / / thread testing new Thread () (public void run () (while (true) (try (Thread.sleep (100); new FileReader fr = FileReader (new File ( "c: \ \ test.txt")); int c; while ((c = fr.read ())!= -1) (System.out.println ( "OK =" + (char ) c);) fr.close (); break;) catch (Exception e) (System.out.println ( "error =" + e);)))). start (); / / simulation other operating consumption When: For example, can not be modified with notepad open. But using this procedure to read and write documents will be unusual raf.write ( "kingfish (800 Chuan @ City differences in the customer)." GetBytes ()); Thread.sleep (5000); fl.release (); System. out.println ( "release the lock!");) raf.close ();)) C: \ java> </ Td> </ tr> <tr>
↑ Back Abstract: recursive - output directory tree under way documents </ Td> </ tr> <tr> <td height="35" valign="top" class="ArticleTeitle"> <table width = "100%" border = "0" cellspacing = "0" cellpadding = " 0 "> <tr> <td width="198" height="86" align="center" valign="top"> </ td> <td width="486" valign="top">
A simple recursive procedure, which read the directory to all the files, and then to the tree form on the screen print out ↑ Back
Algorithm brief: From a View to be determined starting folder, the folder search all subfolders and documents, if the document is a match, then join the results of successful matching sets, as if the sub-folder, or moving queue. Queue not air, and repeat the above operation, queue is empty, procedure, and returning results.
Below is the code:
Import java.util.Vector;
Import java.io.File;
Import java.util.ArrayList;
Import java.io.UnsupportedEncodingException;
(Public class BFSFileSearch
/ **
* @ Param fileName String need to find a document can contain entries such as *. java
* @ Param base File String folder to View
* @ Param ArrayList fileList result set
* @ Param count int results volume control, 0, indicating the return of all matching documents
* /
Public void scanFiles (File base, String fileName, ArrayList fileList, int count) (
Queue queue = new Queue ();// example of the queue
Queue.put (base) / / all teams
While (! Queue.isEmpty ()) (
File f = (File) queue.get ();// a queue
If (f.exists () & & f.isDirectory ()) (
String [] = f.list files ();
For (int i = 0; i
If (f2.isDirectory ()){// folder or moving queue
Queue.put (f2);
) Else (/ / Document match
String filePath = f2.getAbsolutePath ();
FilePath = filePath.substring (filePath.lastIndexOf ( "\ \") +1) / / extract file name
If (wildcardMatch (fileName, matching success filePath )){//
If (count! = 0 & & fileList.size ()> = count) (
Return;
)
FileList.add (f2.getAbsoluteFile ());// added to the result set.
)
)
)
)
)
)
Public boolean wildcardMatch (String pattern, String string) (
Int stringLength = string.length ();
Int stringIndex = 0;
For (int patternIndex = 0; patternIndex
If (c =='*'){
While (stringIndex
Return true;
)
+ + StringIndex;
) / / End of while
) Else if (c =='?'){
+ + StringIndex;
If (stringIndex> stringLength) (
Return false;
)
Else ()
If (stringIndex> = stringLength | | c! = String.charAt (stringIndex)) (
Return false;
)
+ + StringIndex;
)
)
Return stringIndex == stringLength;
)
Class Queue (/ / FIFO queue
Private Vector vector = new Vector ();
Public void put (Object object) (/ / all teams
Vector.addElement (object);
)
Public Object get a team (){//
Object object = peek ();
If (object! = Null) (
Vector.removeElementAt (0);
)
Return object;
)
Public Object peek (){// elements from the first cohort
If (isEmpty ()) (
Return null;
)
Return vector.elementAt (0);
)
Public boolean isEmpty (){// queue is empty
Return vector.isEmpty ();
)
Public int size of the queue size (){//
Return vector.size ();
)
)
Public static void main (String [] paramert) (
File file = new File ( "c: \ \ java ");// in this directory to find documents
ArrayList fileList = new ArrayList ();// result set
String fileName = "*. java" / / java called for expansion of the paper
Int countNumber = 5; / / maximum return of five documents for the full return 0
BFSFileSearch search = new BFSFileSearch ();
Search.scanFiles (file, fileName, fileList, countNumber); / / View
For (int i = 0; i
)
If (fileList.size () == 0) (
System.out.println ( "No File Fount.");
)
)
)
Running Results:
C: \ java \ BFSFileSearch.java
C: \ java \ chen \ ItemChooser.java
C: \ java \ util \ Tags.java
C: \ java \ com \ corejsf \ CreditCardExpiration.java
C: \ java \ com \ corejsf \ SpinnerRenderer.java
Use Socket-in between two documents
Document sent to:
Import java.net .*;
Import java.io. *;
Public class SendFile extends Thread (
Byte byteBuffer [] = new byte [1024];
RandomAccessFile outFile;
ServerSocket serSocket;
OutputStream outSocket;
Socket tempSocket;
Public static void main (String args []) (
SendFile sf = new SendFile ();
Sf.start ();
System.out.println ( "wait for …");
)
Public SendFile () (
Try (
OutFile = new RandomAccessFile ( "33.zip", "r");
SerSocket = new ServerSocket (9090);
) Catch (Exception e) ()
)
Public void run () (
Try (
TempSocket = serSocket.accept ();
OutSocket = tempSocket.getOutputStream ();
Int amount;
While ((= outFile.read amount (byteBuffer))! = -1) (
OutSocket.write (byteBuffer, 0, amount);
)
System.out.println ( "Send File complete");
OutFile.close ();
TempSocket.close ();
SerSocket.close ();
) Catch (IOException e) ()
)
)
Recipient document (created first test directory)
Import java.net .*;
Import java.io. *;
Public class GetFile extends Thread (
Byte byteBuffer [] = new byte [1024];
Socket tempSocket;
RandomAccessFile inFile;
InputStream inSocket;
Public static void main (String args []) (
GetFile gf = new GetFile ();
Gf.start ();
System.out.println ( "get it …");
)
Public GetFile () (
Try (
InFile = new RandomAccessFile ( "test/33.zip", "rw");
TempSocket = new Socket ( "127.0.0.1", 9090);
InSocket = tempSocket.getInputStream ();
) Catch (Exception e) ()
)
Public void run () (
Int amount;
Try (
While ((= inSocket.read amount (byteBuffer))! = -1) (
InFile.write (byteBuffer, 0, amount);
)
InSocket.close ();
System.out.println ( "Get OK");
InFile.close ();
TempSocket.close ();
) Catch (IOException e) ()
)
) </ Td> <td width="263" valign="top" class="ArticleTeitle">
</ Td> </ tr> <tr> <td height="25" colspan="2" valign="top" class="ArticleTeitle">
Access to the class of documents absolute path
*
* Changes to the generated document templates
* "Ticket preferences> Java> Code Generation> code and Notes
* /
Package mytools;
Import java.io.IOException;
Import java.net.MalformedURLException;
Import java.net.URL;
Import java.security.CodeSource;
Import java.security.ProtectionDomain;
* @ Author on the
*
* This class provides a number of documents under the category of class location positioning method.
* /
(Public class Path
/ **
* Access to a document of the class where the absolute path. This class can be JDK own category, and can also be user-defined categories, or third-party developers of the bag.
* As long as it is in the process of the class can be loaded, it can be identified and located to the class documents absolute path.
*
* @ Param cls
* Class attributes of an object
* @ Return of this kind of class document the location of the absolute path. If there is no definition of this category, the return null.
* /
Public static String getPathFromClass (Class cls) throws IOException (
String path = null;
If (cls == null) (
Throw new NullPointerException ();
)
URL url = getClassLocationURL (cls);
If (url! = Null) (
Path = url.getPath ();
If ( "jar." EqualsIgnoreCase (url.getProtocol ())) (
Try (
Path = new URL (path). GetPath ();
) Catch (MalformedURLException e) (
)
Int location = path.indexOf ("!/");
If (location! = -1) (
Path.substring path = (0, location);
)
)
File file = new File (path);
Path = file.getCanonicalPath ();
)
Return path;
)
* This method can be adopted with a kind of class documents relative path to the file or directory access absolute path. Usually it is very difficult position in the proceedings of a relative path, particularly in the B / S applications.
* Through this method, we can according to our own procedures for the location of the types of documents to locate a relative path.
* For example: a txt file with the Test procedure class files is the path ../../ resource / test.txt,
* Use of this method then Path.getFullPathRelateClass ("../../ resource / test.txt "Test.class)
* The result was the txt files in the system of absolute path.
*
* @ Param relatedPath
* Relative path
* @ Param cls
* Orientation for the class
* @ Return relative paths corresponding to the absolute path
* @ Throws IOException
— Because of this method inquiry file system, might be thrown IO anomaly
* /
Public static String getFullPathRelateClass (String relatedPath, Class cls)
Throws IOException (
String path = null;
If (relatedPath == null) (
Throw new NullPointerException ();
)
String clsPath = getPathFromClass (cls);
File clsFile = new File (clsPath);
String tempPath clsFile.getParent = () + + relatedPath File.separator;
File file = new File (tempPath);
Path = file.getCanonicalPath ();
Return path;
)
* Access to documents such as the location of class URL. This method is the most basic type, called for other methods.
* /
Private static URL getClassLocationURL (final Class cls) (
If (cls == null)
Throw new IllegalArgumentException ( "null input: cls");
URL result = null;
Cls.getName final String clsAsResource = (). Replace ('.','/'). concat (
. "Class");
Cls.getProtectionDomain final ProtectionDomain pd = ();
/ / Java.lang.Class contract does not specify
/ / If 'pd' can ever be null;
/ / It is not the case for Sun's implementations,
/ / But guard against null
/ / Just in case:
If (pd! = Null) (
Pd.getCodeSource final CodeSource cs = ();
/ / 'Cs' can be null depending on
/ / The classloader behavior:
If (cs! = Null)
Result = cs.getLocation ();
/ / Convert a code source location into
/ / A full class file location
/ / For some common cases:
If ( "file." Equals (result.getProtocol ())) (
Try (
If (result.toExternalForm (). EndsWith (. "Jar")
| | Result.toExternalForm (). EndsWith (. "Zip"))
Result = new URL ( "jar:." Concat (
Result.toExternalForm ()). Concat ("!/")
. Concat (clsAsResource));
Else if (new File (result.getFile ()). IsDirectory ())
Result = new URL (result, clsAsResource);
) Catch (MalformedURLException ignore) (
)
)
)
)
/ / Try to find 'cls' definition as a resource;
/ / This is not
/ / Document. D to be legal, but Sun's
/ / Implementations seem to / / allow this:
Cls.getClassLoader final ClassLoader clsLoader = ();
Result = clsLoader! = Null? ClsLoader.getResource (clsAsResource)
: ClassLoader.getSystemResource (clsAsResource);
)
Return result;
)
Try (
System.out.println (getPathFromClass (Path.class));
System.out.println (getFullPathRelateClass ("../..", Path.class));
) Catch (Exception e) (
E.printStackTrace ();
)
)
)
C: \ java \ com \ Path.class
C: \ Examples of documents lock
* Locked file (not amend other threads or processes)
*
* @ Author kingfish
* /
Public LockFile () (
)
Running results:
C: \ java> java LockFile
Get the lock!
Errorjava.io.IOException: Another procedure has been locked part of the documentation, the process can not be accessed.
Errorjava.io.IOException: Another procedure has been locked part of the documentation, the process can not be accessed.
Errorjava.io.IOException: Another procedure has been locked part of the documentation, the process can not be accessed.
Errorjava.io.IOException: Another procedure has been locked part of the documentation, the process can not be accessed.
Errorjava.io.IOException: Another procedure has been locked part of the documentation, the process can not be accessed.
Errorjava.io.IOException: Another procedure has been locked part of the documentation, the process can not be accessed.
Errorjava.io.IOException: Another procedure has been locked part of the documentation, the process can not be accessed.
Errorjava.io.IOException: Another procedure has been locked part of the documentation, the process can not be accessed.
Errorjava.io.IOException: Another procedure has been locked part of the documentation, the process can not be accessed.
Errorjava.io.IOException: Another procedure has been locked part of the documentation, the process can not be accessed.
Errorjava.io.IOException: Another procedure has been locked part of the documentation, the process can not be accessed.
Errorjava.io.IOException: Another procedure has been locked part of the documentation, the process can not be accessed.
Errorjava.io.IOException: Another procedure has been locked part of the documentation, the process can not be accessed.
Errorjava.io.IOException: Another procedure has been locked part of the documentation, the process can not be accessed.
Errorjava.io.IOException: Another procedure has been locked part of the documentation, the process can not be accessed.
Errorjava.io.IOException: Another procedure has been locked part of the documentation, the process can not be accessed.
Errorjava.io.IOException: Another procedure has been locked part of the documentation, the process can not be accessed.
Errorjava.io.IOException: Another procedure has been locked part of the documentation, the process can not be accessed.
Errorjava.io.IOException: Another procedure has been locked part of the documentation, the process can not be accessed.
Errorjava.io.IOException: Another procedure has been locked part of the documentation, the process can not be accessed.
Errorjava.io.IOException: Another procedure has been locked part of the documentation, the process can not be accessed.
Errorjava.io.IOException: Another procedure has been locked part of the documentation, the process can not be accessed.
Errorjava.io.IOException: Another procedure has been locked part of the documentation, the process can not be accessed.
Errorjava.io.IOException: Another procedure has been locked part of the documentation, the process can not be accessed.
Errorjava.io.IOException: Another procedure has been locked part of the documentation, the process can not be accessed.
Errorjava.io.IOException: Another procedure has been locked part of the documentation, the process can not be accessed.
Errorjava.io.IOException: Another procedure has been locked part of the documentation, the process can not be accessed.
Errorjava.io.IOException: Another procedure has been locked part of the documentation, the process can not be accessed.
Errorjava.io.IOException: Another procedure has been locked part of the documentation, the process can not be accessed.
Errorjava.io.IOException: Another procedure has been locked part of the documentation, the process can not be accessed.
Errorjava.io.IOException: Another procedure has been locked part of the documentation, the process can not be accessed.
Errorjava.io.IOException: Another procedure has been locked part of the documentation, the process can not be accessed.
Errorjava.io.IOException: Another procedure has been locked part of the documentation, the process can not be accessed.
Errorjava.io.IOException: Another procedure has been locked part of the documentation, the process can not be accessed.
Errorjava.io.IOException: Another procedure has been locked part of the documentation, the process can not be accessed.
Errorjava.io.IOException: Another procedure has been locked part of the documentation, the process can not be accessed.
Errorjava.io.IOException: Another procedure has been locked part of the documentation, the process can not be accessed.
Errorjava.io.IOException: Another procedure has been locked part of the documentation, the process can not be accessed.
Errorjava.io.IOException: Another procedure has been locked part of the documentation, the process can not be accessed.
Errorjava.io.IOException: Another procedure has been locked part of the documentation, the process can not be accessed.
Errorjava.io.IOException: Another procedure has been locked part of the documentation, the process can not be accessed.
Errorjava.io.IOException: Another procedure has been locked part of the documentation, the process can not be accessed.
Errorjava.io.IOException: Another procedure has been locked part of the documentation, the process can not be accessed.
Errorjava.io.IOException: Another procedure has been locked part of the documentation, the process can not be accessed.
Errorjava.io.IOException: Another procedure has been locked part of the documentation, the process can not be accessed.
Errorjava.io.IOException: Another procedure has been locked part of the documentation, the process can not be accessed.
Errorjava.io.IOException: Another procedure has been locked part of the documentation, the process can not be accessed.
Release the lock!
OK = k
OK = i
OK = n
OK = g
OK = f
OK = i
OK = s
OK = h
OK = (
OK = 8
OK = 100
OK = Lane
OK = Qin
OK = -
OK = @
OK = LONG
OK = City
OK = differences
OK = off
OK =)
Recursive - output directory tree under way documents