Heim Backend-Entwicklung XML/RSS-Tutorial xml, ausführliche Erläuterung des Beispielcodes der Dateioperationsfunktionsklasse

xml, ausführliche Erläuterung des Beispielcodes der Dateioperationsfunktionsklasse

Mar 22, 2017 pm 04:33 PM

Ich habe es in einem Projekt verwendet, aber Sie können darin einige nützliche Codes finden, die ich in Zukunft langsam hinzufügen und aktualisieren werde:

FileUtil.xml

package com.novel.util;
 
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
 
/**
 * @author cy
 *
 * @date 2015年7月24日 上午8:38:38
 *
 * @Description 关于文件的一些工具
 */
public class FileUtils {
    /**
     * 将文件中所有内容读取到字符串中
     * 
     * @param filePath
     *            文件路径
     * @return 文件内容
     */
    public static String getStringFromFile(String filePath) {
        File file = new File(filePath) ;
        if(!file.exists()){
             return "" ;
        }
        /**
         * 处理文件读取乱码问题 :
         * 只要判定两种常见的编码就可以了:GBK和UTF-8。由于中文Windows默认的编码是GBK,所以一般只要判定UTF-8编码格式。
            *对于UTF-8编码格式的文本文件,其前3个字节的值就是-17、-69、-65
         */
        try{
            byte[] firstThreeByte = new byte[3] ;
            InputStream in = new FileInputStream(file) ;
            in.read(firstThreeByte) ;
            in.close() ;
            String encoding = "" ;
            if(firstThreeByte[0] == -17 && firstThreeByte[1] == -16 && firstThreeByte[2] == -65){
                encoding = "utf-8" ;
            }else{
                encoding = "gbk" ;
            }
             InputStreamReader read = new InputStreamReader(new FileInputStream(file),encoding);      
            Long filelength = file.length() / 2 ; // 该方法获取的是文件字节长度,
                                                  //而我要创建的是char数组,char占两个字节,
                                                  //byte一个字节,所以除以2表示的是该文件的字符长度
            char[] filecontent = new char[filelength.intValue()] ; 
            read.read(filecontent) ;
            return new String(filecontent) ;
        }catch(Exception e ){
            e.printStackTrace();
            return "" ;
        }
    }
 
    /**
     * 将字符串写入文件
     * 
     * @param content
     *            字符串内容
     * @param filePath
     *            文件路径
     * @throws IOException
     */
    public static void writeStringToFile(String content, String filePath)
            throws IOException {
 
        File file = new File(filePath);
        if (!file.exists()) {
            file.createNewFile();
        }
        FileOutputStream out = new FileOutputStream(file);
        out.write(content.getBytes());
        out.close();
    }
    /**
     * 删除指定的文件 
     * @param filePath文件路径 
     */
    public static void deleteFile(String filePath ) {
        File file = new File(filePath) ;
        if(file.exists()){
            file.delete() ;
        }
    }
}
Nach dem Login kopieren

XmlUtil.java

package com.novel.util;
 
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.TransformerFactoryConfigurationError;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
 
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.Text;
import org.xml.sax.SAXException;
 
import com.novel.entity.Novel;
import com.novel.entity.User;
 
/**
 * @author cy
 *
 * @date 2015年7月23日 下午3:19:06
 *
 * @Description 关于xml的操作
 */
public class XmlUtil {
    /**
     * 目标xml为 config/users.xml
     * 
     * @param user
     *            将要被写入xml的User对象
     * @return 是否成功
     */
    public static boolean writeUserToXml(User user) {
        try {
            Document doc = getDocumentFromXml("config/users.xml");
            Element newUserElement = doc.createElement("user");
            Element newUsernameElement = doc.createElement("name");
            Text nameTextNode = doc.createTextNode("nameValue");
            nameTextNode.setNodeValue(user.getName());
            newUsernameElement.appendChild(nameTextNode);
            Element newUserPwdElement = doc.createElement("pwd");
            Text pwdTextNode = doc.createTextNode("pwdValue");
            pwdTextNode.setNodeValue(user.getName());
            newUserPwdElement.appendChild(pwdTextNode);
            newUserElement.appendChild(newUsernameElement);
            newUserElement.appendChild(newUserPwdElement);
            Element usersElement = (Element) doc.getElementsByTagName("users")
                    .item(0);
            usersElement.appendChild(newUserElement);
 
            writeDocumentToFile(doc, "config/users.xml");
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }
 
    /**
     * 
     * @param doc
     *            XML中的Document对象
     * @param filePath
     *            输出的文件路径
     * @throws TransformerFactoryConfigurationError
     * @throws TransformerConfigurationException
     * @throws TransformerException
     */
    private static void writeDocumentToFile(Document doc, String filePath)
            throws TransformerFactoryConfigurationError,
            TransformerConfigurationException, TransformerException {
        // 写入到硬盘
        TransformerFactory tFactory = TransformerFactory.newInstance();
        Transformer transformer = tFactory.newTransformer();
        /** 编码 */
        transformer.setOutputProperty(OutputKeys.ENCODING, "utf-8");
        DOMSource source = new DOMSource(doc);
        StreamResult result = new StreamResult(new File(filePath));
        transformer.transform(source, result);
    }
 
    /**
     * 加载config/users.xml中用户信息到对象中
     * 
     * @return 加载后的对象
     */
    public static Map<String, User> initUser() {
        InitUser.users = new HashMap<String, User>();
        try {
            Document doc = getDocumentFromXml("config/users.xml");
            NodeList usersNodeList = doc.getElementsByTagName("user");
            for (int i = 0; i < usersNodeList.getLength(); i++) {
                Element userElement = (Element) usersNodeList.item(i);
                String userName = ((Element) (userElement
                        .getElementsByTagName("name").item(0))).getFirstChild()
                        .getNodeValue();
                String passwd = ((Element) (userElement
                        .getElementsByTagName("pwd").item(0))).getFirstChild()
                        .getNodeValue();
                InitUser.users.put(userName, new User(userName, passwd));
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            return InitUser.users;
        }
    }
 
    /**
     * 从xml中获取服务器运行的端口
     * 
     * @return server.xml文件中的端口号
     */
    public static int getServerPort() {
        try {
            Document doc = getDocumentFromXml("config/server.xml");
            int serverPort = Integer.parseInt(doc
                    .getElementsByTagName("server-port").item(0)
                    .getFirstChild().getNodeValue());
            return serverPort;
        } catch (Exception e) {
            e.printStackTrace();
            return 0;
        }
    }
 
    /**
     * 
     * @param xmlPath
     *            xml文件的位置
     * @return 这个xml文件相应的Document对象
     * @throws SAXException
     * @throws IOException
     * @throws ParserConfigurationException
     */
    public static Document getDocumentFromXml(String xmlPath)
            throws SAXException, IOException, ParserConfigurationException {
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();
        Document doc = builder.parse(xmlPath);
        return doc;
    }
 
    /**
     * 读取xml中小说的信息到List中
     * 
     * @param novelId
     *            小说id
     * @return 小说列表
     * @throws ParserConfigurationException 
     * @throws IOException 
     * @throws SAXException 
     */
    public static List<Novel> getNovelListFromXml(String filePath) throws SAXException, IOException, ParserConfigurationException {
        List<Novel> novelList = new ArrayList<Novel>();
        Document doc = getDocumentFromXml(filePath);
        NodeList novels = doc.getElementsByTagName("novel");
        for (int i = 0; i < novels.getLength(); i++) {
            Element novel = ((Element) novels.item(i));
            int id = Integer.parseInt(novel.getElementsByTagName("id").item(0)
                    .getFirstChild().getNodeValue());
            String name = novel.getElementsByTagName("name").item(0)
                    .getFirstChild().getNodeValue();
            String author = novel.getElementsByTagName("author").item(0)
                    .getFirstChild().getNodeValue();
            String category = novel.getElementsByTagName("category").item(0)
                    .getFirstChild().getNodeValue();
            String description = novel.getElementsByTagName("description")
                    .item(0).getFirstChild().getNodeValue();
             
            Novel oneNovel = new Novel(id, category, name, author, description);
            novelList.add(oneNovel);
        }
        return novelList ;
    }
    /**
     * 将Novel信息写入到config/novelsInfo.xml中并且将小说内容写入到novel文件夹下
     * @param novel 小说对象
     * @return 是否写入成功 
     * TODO:确定原子操作
     */
    public static boolean writeNovelToFile(Novel novel ) {
        /**
         * 先将小说内容写入到novel文件夹下,再将小说信息写入到config/novelsInfo.xml中
         */
        try{
            FileUtils.writeStringToFile(novel.getContent(), "novel/" + novel.getName() + ".txt");
            XmlUtil.writeNovelInfoToXml(novel) ;
            return true ;
        }catch(Exception e ){
            /**
             * 如果写入小说到文件中出现问题,要将已经写入的信息删除
             * 这段代码应该很少执行到 ~~~~
             * 
             */
            System.out.println("小说写入文件失败,正在回滚~~");
            FileUtils.deleteFile("novel/" + novel.getName() + ".txt") ;
            XmlUtil.deleteNovelInfoFromXml(novel) ;
            e.printStackTrace();
            return false ;
        }
    }
 
    /**
     * 从config/novelsInfo.xml中删除与novel对象相对应的的novel标签,根据ID号判断是否相同
     * 
     * @param novel
     *            小说对象
     */
    public static void deleteNovelInfoFromXml(Novel novel) {
        try {
            Document doc = getDocumentFromXml("config/novelsInfo.xml");
            Element novelsElement = (Element) doc
                    .getElementsByTagName("novels").item(0);
            NodeList novelElements = novelsElement
                    .getElementsByTagName("novel");
 
            Node deleteElement = null;
            for (int i = 0; i < novelElements.getLength(); i++) {
                String id = ((Element) novelElements.item(i))
                        .getElementsByTagName("id").item(0).getFirstChild()
                        .getNodeValue();
                if (id.equals(String.valueOf(novel.getId()))) {
                    deleteElement = novelElements.item(i);
                    break;
                }
            }
            novelsElement.removeChild(deleteElement);
            writeDocumentToFile(doc, "config/novlesInfo.xml");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * 将小说信息写入到config/novelsInfo.xml文件中
     * @param novel小说对象
     */
    public static void writeNovelInfoToXml(Novel novel){
        Document doc = null ;
        try {
            doc = getDocumentFromXml("config/novelsInfo.xml");
        } catch (Exception e) {
            e.printStackTrace();
            return ;
        }
        Element novelDocument = (Element)doc.createElement("novel") ;
        // id
        Element novelIdDocument = (Element)doc.createElement("id") ;
        Text novelIdTextNode = doc.createTextNode("idValue") ;
        novelIdTextNode.setNodeValue(String.valueOf(novel.getId()));
        novelIdDocument.appendChild(novelIdTextNode);
        // name
        Element novelNameDocument = (Element)doc.createElement("name") ;
        Text novelNameTextNode = doc.createTextNode("nameValue") ;
        novelNameTextNode.setNodeValue(String.valueOf(novel.getName()));
        novelNameDocument.appendChild(novelNameTextNode);
        // author
        Element novelAuthorDocument = (Element)doc.createElement("author") ;
        Text novelAuthorTextNode = doc.createTextNode("authorValue") ;
        novelAuthorTextNode.setNodeValue(String.valueOf(novel.getAuthor()));
        novelAuthorDocument.appendChild(novelAuthorTextNode);
        // category
        Element novelCategoryDocument = (Element)doc.createElement("category") ;
        Text novelCategoryTextNode = doc.createTextNode("categoryValue") ;
        novelCategoryTextNode.setNodeValue(String.valueOf(novel.getCategory()));
        novelCategoryDocument.appendChild(novelCategoryTextNode);
        // description 
        Element novelDescriptionDocument = (Element)doc.createElement("description") ;
        Text novelDescriptionTextNode = doc.createTextNode("descriptionValue") ;
        novelDescriptionTextNode.setNodeValue(String.valueOf(novel.getDescription()));
        novelDescriptionDocument.appendChild(novelDescriptionTextNode);
         
        novelDocument.appendChild(novelIdDocument) ;
        novelDocument.appendChild(novelNameDocument) ;
        novelDocument.appendChild(novelAuthorDocument) ;
        novelDocument.appendChild(novelCategoryDocument) ;
        novelDocument.appendChild(novelDescriptionDocument) ;
        doc.getElementsByTagName("novels").item(0).appendChild(novelDocument) ;
        // 写到文件中
        try {
            writeDocumentToFile(doc, "config/novelsInfo.xml");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonxml, ausführliche Erläuterung des Beispielcodes der Dateioperationsfunktionsklasse. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Kann ich eine XML-Datei mit PowerPoint öffnen? Kann ich eine XML-Datei mit PowerPoint öffnen? Feb 19, 2024 pm 09:06 PM

Können XML-Dateien mit PPT geöffnet werden? XML, Extensible Markup Language (Extensible Markup Language), ist eine universelle Auszeichnungssprache, die häufig im Datenaustausch und in der Datenspeicherung verwendet wird. Im Vergleich zu HTML ist XML flexibler und kann eigene Tags und Datenstrukturen definieren, wodurch die Speicherung und der Austausch von Daten komfortabler und einheitlicher werden. PPT oder PowerPoint ist eine von Microsoft entwickelte Software zum Erstellen von Präsentationen. Es bietet eine umfassende Möglichkeit

Wie kann ich Dateien mit Golang sicher lesen und schreiben? Wie kann ich Dateien mit Golang sicher lesen und schreiben? Jun 06, 2024 pm 05:14 PM

Das sichere Lesen und Schreiben von Dateien in Go ist von entscheidender Bedeutung. Zu den Richtlinien gehören: Überprüfen von Dateiberechtigungen, Schließen von Dateien mithilfe von Verzögerungen, Validieren von Dateipfaden, Verwenden von Kontext-Timeouts. Das Befolgen dieser Richtlinien gewährleistet die Sicherheit Ihrer Daten und die Robustheit Ihrer Anwendungen.

Kann ich Gho-Dateien löschen? Kann ich Gho-Dateien löschen? Feb 19, 2024 am 11:30 AM

Eine GHO-Datei ist eine Image-Datei, die von der NortonGhost-Software erstellt und zum Sichern und Wiederherstellen des Betriebssystems und der Daten verwendet wird. In manchen Fällen können Sie Gho-Dateien löschen, aber gehen Sie dabei vorsichtig vor. In diesem Artikel werden die Rolle von Gho-Dateien, Vorsichtsmaßnahmen zum Löschen von Gho-Dateien und das Löschen von Gho-Dateien vorgestellt. Lassen Sie uns zunächst die Rolle von Gho-Dateien verstehen. Eine GHO-Datei ist eine komprimierte System- und Datensicherungsdatei, die ein Abbild einer gesamten Festplatte oder einer bestimmten Partition speichern kann. Diese Art von Sicherungsdatei wird normalerweise für die Notfallwiederherstellung verwendet

So beheben Sie: Fehler beim Java-Dateivorgang: Das Schreiben der Datei ist fehlgeschlagen So beheben Sie: Fehler beim Java-Dateivorgang: Das Schreiben der Datei ist fehlgeschlagen Aug 26, 2023 pm 09:13 PM

So lösen Sie: Fehler beim Java-Dateivorgang: Beim Schreiben von Dateien ist ein Fehler aufgetreten. Bei der Java-Programmierung sind häufig Dateivorgänge erforderlich, und das Schreiben von Dateien ist eine der wichtigsten Funktionen. Manchmal treten jedoch Fehler beim Schreiben von Dateien auf, die dazu führen können, dass das Programm nicht ordnungsgemäß ausgeführt wird. In diesem Artikel werden einige häufige Ursachen und Lösungen beschrieben, die Ihnen bei der Lösung dieser Art von Problem helfen sollen. Falscher Pfad: Ein häufiges Problem ist der falsche Dateipfad. Wenn wir versuchen, eine Datei in den angegebenen Pfad zu schreiben, wird die Datei geschrieben, wenn der Pfad nicht existiert oder die Berechtigungen nicht ausreichen.

Go-Programmiertipps: Inhalte aus einer Datei löschen Go-Programmiertipps: Inhalte aus einer Datei löschen Apr 04, 2024 am 10:06 AM

Die Go-Sprache bietet zwei Methoden zum Löschen von Dateiinhalten: die Verwendung von io.Seek und io.Truncate oder die Verwendung von ioutil.WriteFile. Bei Methode 1 wird der Cursor an das Ende der Datei bewegt und dann die Datei abgeschnitten. Bei Methode 2 wird ein leeres Byte-Array in die Datei geschrieben. Der praktische Fall zeigt, wie diese beiden Methoden zum Löschen von Inhalten in Markdown-Dateien verwendet werden.

Umgang mit XML- und JSON-Datenformaten in der C#-Entwicklung Umgang mit XML- und JSON-Datenformaten in der C#-Entwicklung Oct 09, 2023 pm 06:15 PM

Für den Umgang mit XML- und JSON-Datenformaten in der C#-Entwicklung sind spezifische Codebeispiele erforderlich. In der modernen Softwareentwicklung sind XML und JSON zwei weit verbreitete Datenformate. XML (Extensible Markup Language) ist eine Auszeichnungssprache zum Speichern und Übertragen von Daten, während JSON (JavaScript Object Notation) ein leichtes Datenaustauschformat ist. Bei der C#-Entwicklung müssen wir häufig XML- und JSON-Daten verarbeiten und verarbeiten. Dieser Artikel konzentriert sich auf die Verwendung von C# zum Verarbeiten und Anhängen dieser beiden Datenformate

Wie füge ich mit C++ Inhalte an einer bestimmten Stelle in eine Datei ein? Wie füge ich mit C++ Inhalte an einer bestimmten Stelle in eine Datei ein? Jun 04, 2024 pm 03:34 PM

Verwenden Sie in C++ die Klasse ofstream, um Inhalte an einer bestimmten Stelle in einer Datei einzufügen: Öffnen Sie die Datei und suchen Sie die Einfügemarke. verwenden

POJO mithilfe der Jackson-Bibliothek in Java in XML konvertieren? POJO mithilfe der Jackson-Bibliothek in Java in XML konvertieren? Sep 18, 2023 pm 02:21 PM

Jackson ist eine Java-basierte Bibliothek, die zum Konvertieren von Java-Objekten in JSON und JSON in Java-Objekte nützlich ist. JacksonAPI ist schneller als andere APIs, benötigt weniger Speicherbereich und eignet sich für große Objekte. Wir verwenden die Methode writeValueAsString() der Klasse XmlMapper, um das POJO in das XML-Format zu konvertieren. Die entsprechende POJO-Instanz muss als Parameter an diese Methode übergeben werden. Syntax publicStringwriteValueAsString(Objectvalue)throwsJsonProcessingExceptionExampleimp

See all articles