


xml, ausführliche Erläuterung des Beispielcodes der Dateioperationsfunktionsklasse
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() ; } } }
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(); } } }
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!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

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

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen





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

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.

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 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.

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.

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

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

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
