java對文件等、附件線上預覽的詳細開發步驟解析:openOffice+SwfTools+FlexPaper
線上預覽實現簡介:
過程分為:1、使用OpenOffice(JODConverter)將不同型別的附件轉換為.pdf字尾的檔案(PDF);
2、使用SwfTools將pdf檔案轉換為swf檔案;
3、使用FlexPaper 在jsp中預覽swf檔案;
注意:此過程不包含檔案的上傳下載部分程式碼說明;
本文的系統環境為 windows
Linux我會在下篇部落格中進行說明(不同點也就是在安裝openoffice和swftools上的不同,在Linux比較麻煩容易出現很多小問題)
由於本人經驗有限,如有紕漏和不足 多多批評;
在此過程中遇到的問題以及解決方法,下面將進行詳細解析:(該文可能會隨時更新)
首先第一步(安裝包下載以及安裝):
1.openoffice是Apache下的一個開放免費的文書處理軟體
2.SWFTools是一組用來處理Flash的swf檔案的工具包,我們使用它將pdf檔案轉成swf檔案!
3.FlexPaper是一個開源輕量級的在瀏覽器上顯示各種文件的元件(下載下來後解壓即可)
將所下載的檔案進行安裝(除了FlexPaper),碟符可設定!需要說明一下openOffice
安裝openoffice(第三方工具) 使用的版本為4.1.2
openoffice.org是一套sun的開源office辦公套件,能在widows,linux,solaris等作業系統上執行
可以將word、excel、ppt、txt等檔案轉換為pdf檔案;(下載完成後直接安裝即可)
安裝完成後,我們還需要啟動openoffice server。有兩種做法:
1.以命令列方式啟動openoffice server,缺點是每次系統重啟,都需要手動去把openoffice server啟動。
2.將openoffice server作為作業系統的服務啟動,既然成為了系統服務,就可以設定開機自動啟動了。
我們先來看第一種方式,
1.以命令列方式啟動openoffice server
在cmd命令下,cd opeonofiice的安裝路徑/program 如:cd C:\Program Files (x86)\OpenOffice 4\program
在這層目錄下執行下面的命令即可
soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard
127.0.0.1 :是安裝openOffice的主機可以寫成 指定的ip
2.以系統服務的方式啟動
這裡我們還需要Windows Resource Kit tools ,將openoffice server設為系統服務。
Windows Resource Kit tools 是微軟專為管理人員、開發人員和高階使用者開發的,包括管理活動目錄、組策略、TCP/IP網路、登錄檔、系統安全、監測等涉及Windows Server 2003 作業系統的其它很多方面的非常規安裝的工具元件。Resource Kit Tools for XP的釋出使得XP使用者也能使用Resource Kit Tools對這些問題進行處理。
下載windows resource kit tools,我們進行預設安裝。
1.開啟Windows Resource Kit Tools
在Command Shell執行以下命令:
"C:\Program Files\Windows Resource Kits\Tools\instsrv" OpenOfficeUnoServer "C:\Program Files\Windows Resource Kits\Tools\srvany.exe"
開啟 管理工具->服務 可以找到以 OpenOfficeUnoServer 命名的服務
2.開啟登錄檔尋找以下路徑
HKEY_LOCAL_MACHINE -> SYSTEM ->ControlSet001 ->Services ->OpenOfficeUnoServer
新建項 Parameters,在該項下新增兩個字串值:
key:Application
value:C:\Program Files\OpenOffice.org 3\program\soffice.exe
key:AppParameters
value:-invisible -headless -accept=socket,host=127.0.0.1,port=8100;urp;-nofirststartwizard
3.在服務控制檯啟動 openoffice 服務
4.在CMD中用以下命令檢視8100是否已被監聽:netstat -anop tcp
這樣OpenOffice3.0就以服務方式執行在Windows系統上了。(使用cmd命令:netstat -aon|findstr 8100檢視8100埠是否工作)
然後可以通過socket方式連線openOffice,以使用openoffice提供的某些服務,如檔案轉換服務,ms office轉pdf等等。
開源專案JODConverter 就是結合openoffice來進行文件轉換的java元件。
另外有一個命令列工具swftools,該工具可以將pdf轉換為swf格式的文件,提供給ie客戶端流覽。
另外,我們可以將該配置用bat檔案來快速實現,執行前請先修改相應目錄引數:
openoffice service.bat檔案
"C:\Program Files\Windows Resource Kits\Tools\instsrv" OpenOfficeUnoServer "C:\Program Files\Windows Resource Kits\Tools\srvany.exe"
reg add HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\OpenOfficeUnoServer\Parameters /ve /d
reg add HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\OpenOfficeUnoServer\Parameters /v Application /t REG_SZ /d "C:\Program Files\OpenOffice.org 3\program\soffice.exe"
reg add HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\OpenOfficeUnoServer\Parameters /v AppParameters /t REG_SZ /d "-invisible -headless -accept=socket,host=127.0.0.1,port=8100;urp; -nofirststartwizard"
第二步:開發過程解析(此過程對主要的程式碼進行說明)
1、 在已有專案中或者新建web專案;
在專案中需要新增引入依賴的jar包以及js檔案,缺少的jar包可自行下載:我習慣在這裡下載http://cn.jarfire.org/
需要的jar包
需要的js檔案swf檔案,此檔案在flexPaper的包中的js資料夾下
將js以及swf檔案,放在專案根目錄的自定義的包下,以便在jsp中引用;
特別說明的是 flexpaper.js需要修改一下,很簡單
修改的目的是因為你所引用的swf檔案,是可以隨意存放在你自定義的資料夾下,保證我們來引用就可以,這裡就是修改的檔案路徑(舉例說明)
到這步基本具備了實現預覽功能的輔助的工具以及第三方包的引入;
2、建立轉換類
import java.io.BufferedInputStream;import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import com.artofsolving.jodconverter.DocumentConverter;
import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter;
import com.integrity.dataSmart.impAnalyImport.util.ContentType;
import com.integrity.dataSmart.impAnalyImport.util.FileTools;
import com.integrity.lawCase.util.ChineTo16Utils;
/**
* doc docx格式轉換
* @author Liubf
* 文字線上預覽實現
*/
public class DocConverter {
private static Logger logger = Logger.getLogger(DocConverter.class);
private static int environment;//環境1:windows 2:linux(涉及pdf2swf路徑問題)
private String fileString;
private String outputPath;//輸入路徑,如果不設定就輸出在預設位置(上傳檔案儲存的路徑)
private String fileName;
private File pdfFile;
private File swfFile;
private File docFile;
static{
if(isWindowsSys()){
environment = 1;
}else{
environment = 2;
}
}
public DocConverter(String fileString){
ini(fileString);
}
/*
* 重新設定 file
* @param fileString
*/
public void setFile(String fileString){
ini(fileString);
}
/**
* @param fileString
* 初始化
*/
private void ini(String fileString){
this.fileString=fileString;
fileName=fileString.substring(0,fileString.lastIndexOf("."));
docFile=new File(fileString);
pdfFile=new File(fileName+".pdf");
String s = fileName.substring(0,fileName.lastIndexOf(File.separator));
String e = fileName.substring(fileName.lastIndexOf(File.separator)+1);
String utf8name = ChineTo16Utils.getUtf8(e);
utf8name = s+File.separator+utf8name;
swfFile=new File(utf8name+".swf");//轉換後輸出的swf檔案
}
/**
* 判斷是否是windows作業系統
* @author Liubf
* @return true false
*/
private static boolean isWindowsSys() {
String p = System.getProperty("os.name");
return p.toLowerCase().indexOf("windows") >= 0 ? true : false;
}
/**
* 轉pdf檔案
*/private void doc2pdf(String serviceIp){
if(docFile.exists()){
if(!pdfFile.exists()){
OpenOfficeConnection connection=new SocketOpenOfficeConnection(serviceIp,8100);
//serverIP是openoffice的服務ip,這樣是因為避免openoffice的服務不在同一臺伺服器上
//如果是本地服務這樣 SocketOpenOfficeConnection("127.0.0.1",8100);就可以,
//或者SocketOpenOfficeConnection("127.0.0.1",8100)
try{connection.connect();
DocumentConverter converter=new OpenOfficeDocumentConverter(connection);
try {
converter.convert(docFile,pdfFile);
//close the connection
} catch (Exception e) {
logger.error("文字格式不符合要求:建議安裝最新版本的openoffice",e);
}
}catch(java.net.ConnectException e){
logger.error("****swf轉換異常,openoffice服務未啟動!****",e);
}catch(com.artofsolving.jodconverter.openoffice.connection.OpenOfficeException e){
logger.error("****swf轉換器異常,讀取轉換檔案失敗****",e);
throw e;
}catch(Exception e){
e.printStackTrace();
throw e;
}finally {
if (connection != null) {
connection.disconnect();
connection = null;
}
}
}else{
//System.out.println("****已經轉換為pdf,不需要再進行轉化****");
}
}else{
logger.error("****swf轉換器異常,需要轉換的文件不存在,無法轉換****");
}
}
/**
* 轉swf檔案
*/private void pdf2swf(String exePath){//exePath引數是swftools執行檔案的路徑
Runtime r=Runtime.getRuntime();
if(!swfFile.exists()){
if(pdfFile.exists()){
if(environment==1){//windows環境處理
try { Process p=r.exec(
exePath+" "+pdfFile.getPath()+" -o "+swfFile.getPath()+" -T 9 -t -s storeallcharacters");
loadStream(p.getInputStream());//System.out.print(loadStream(p.getInputStream()));
//System.err.print(loadStream(p.getErrorStream()));
//System.out.print(loadStream(p.getInputStream()));
System.err.println("****swf轉換成功,檔案輸出:"+swfFile.getPath()+"****");
if(pdfFile.exists())
{
pdfFile.delete();
}
}catch (Exception e){
e.printStackTrace();
}
}else if(environment==2){//linux環境處理
try {
Process p=r.exec(
exePath+" "+pdfFile.getPath()+" -o "+swfFile.getPath()+" -T 9 -t -s storeallcharacters");
loadStream(p.getInputStream());//System.out.print(loadStream(p.getInputStream()));
//System.err.print(loadStream(p.getErrorStream()));
//System.err.println("****swf轉換成功,檔案輸出:"+swfFile.getPath()+"****");
if(pdfFile.exists()){
pdfFile.delete();
}
}catch(Exception e){
e.printStackTrace();
}
}
}else{
logger.error("****pdf不存在,無法轉換****");
}
}else{
logger.info("****swf已存在不需要轉換****");
}
}
static String loadStream(InputStream in){
int ptr=0;
in=new BufferedInputStream(in);
StringBuffer buffer=new StringBuffer();
try {
while((ptr=in.read())!=-1)
{
buffer.append((char)ptr);
}
} catch (IOException e) {
logger.error("載入資料流異常",e);
}
return buffer.toString();
}
/**
* @param fileName 檔名(含字尾)
* @return true false
* 轉換主方法
*/
public boolean conver(String fileName,String openIp,String exePath){
String fileTypes = FileTools.getTypeByFileName(fileName);
String contentTypes= ContentType.getNameByType(fileTypes);
if (StringUtils.isBlank(contentTypes)) {
logger.error("當前檔案型別不支援預覽: "+ fileName );
return false;
}else{
if(swfFile.exists())
{
//System.out.println("****swf轉換器開始工作,該檔案已經轉換為swf****");
return true;
}
try {
doc2pdf(openIp);
pdf2swf(exePath);
} catch (Exception e) {
e.printStackTrace();
return false;
}
if(swfFile.exists())
{
return true;
}
else {
return false;
}
}
}
}
3 轉碼工具類ChineToUtfUtils目的是因為flexPaper對swf檔案進行預覽載入的時候,檔名會預設轉碼為utf-8(處理後),這樣會導致如果上傳的中文名的檔案預覽失敗,包錯404找不到,就是因為檔名被轉碼;
/**
* @author liuBf
* 獲取中文的utf-8編碼值
*
*/
public class ChineToUtfUtils {
public static String getUtf8(String strInput){
StringBuffer output = new StringBuffer();
for (int i = 0; i < strInput.length(); i++)
{
output.append(Integer.toString(strInput.charAt(i), 16));
}
return output.toString().toUpperCase();
}
4.上傳檔案的程式碼 中呼叫程式碼(主要)
//將文字轉換為swf檔案,用於線上預覽;
DocConverter d=new DocConverter(realpath+fileName);//引數為上傳檔案的路徑以及檔名稱
String exe = swfdatas.get("swf.exe").toString();
String openIp = swfdatas.get("openoffice.ip").toString();
//exe 是我在專案啟動時,自動載入的配置資訊,也就是swfTools的執行檔案路徑
//openIp是openoffice的服務ip
d.conver(fileName,openIp,exe);
如果初步測試可這樣寫(open為本地服務):
DocConverter d=new DocConverter(realpath+fileName);
d.conver(fileName,"127.0.0.1",“E:/SWFtools/pdf2swf.exe”);//這是swfTools安裝目錄下的exe檔案
//E:/SWFtools/pdf2swf.exe被呼叫後,實現pdf轉swf
也就是說action中值加入這三行程式碼;
上傳檔案成功(同時也生成了swf可預覽的檔案);
5、點選預覽時呼叫的action程式碼
public String toShowIngOnline(){
//在這裡因為特別原因,我會在資料庫中重新查到上傳檔案的資料(所要預覽的檔案)
//其實在前臺可以直接將要預覽的檔案路徑傳過來 接受就可以了
//這裡可更具具體情況編碼
String fid = request.getParameter("fid");
FilesObject fo = fileManageService.getFileinfoByid(Long.valueOf(fid));
String filename = fo.getFileName().substring(0,fo.getFileName().indexOf(".")).trim();
filename = ChineToUtfUtils.getUtf8(filename);
String directory = "images/uploadFile/"+fo.getAnnexName()+"/"+filename+".swf";
request.getSession().setAttribute("swfpath", directory);
return SUCCESS;
}
6 建立showingOnline.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
String swfFilePath=session.getAttribute("swfpath").toString();
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" >
<html>
<head>
<base href="<%=basePath%>">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="scripts/showOnline/jquery.min.js"></script>
<script type="text/javascript" src="scripts/showOnline/flexpaper.js"></script>
<style type="text/css" media="screen">
html, body { height:100%; }
body { margin:0; padding:0; overflow:auto; }
#flashContent { display:none; }
</style>
<title>文件線上預覽系統</title>
</head>
<body>
<div id="viewerPlaceHolder" class="flexpaper_viewer" style="width:1084px;height:560px;"></div>
<script type="text/javascript">
$('#viewerPlaceHolder').FlexPaperViewer(
{ config : {
SWFFile : escape('<%=swfFilePath%>'),
Scale : 1,
ZoomTransition : 'easeOut',
ZoomTime : 0.5,
ZoomInterval : 0.2,
FitPageOnLoad : false,
FitWidthOnLoad : true,
FullScreenAsMaxWindow : false,
ProgressiveLoading : false,
MinZoomSize : 0.5,
MaxZoomSize : 2,
SearchMatchAll : true,
InitViewMode : 'Portrait',
ReaderingOrder :'false',
StartAtPage :'',
ViewModeToolsVisible : true,
ZoomToolsVisible : true,
NavToolsVisible : true,
CursorToolsVisible : true,
SearchToolsVisible : true,
localeChain: 'zh_CN'
}});
</script>
</body>
</html>
7、測試收工
8、FlexPaper api
Flexpaper可能用到如下引數
SwfFile (String) | 需要使用Flexpaper開啟的文件 |
Scale (Number) | 初始化縮放比例,引數值應該是大於零的整數 |
ZoomTransition (String) | Flexpaper中縮放樣式,它使用和Tweener一樣的樣式,預設引數值為easeOut.其他可選值包括: easenone, easeout, linear, easeoutquad |
ZoomTime (Number) | 從一個縮放比例變為另外一個縮放比例需要花費的時間,該引數值應該為0或更大。 |
ZoomInterval (Number) | 縮放比例之間間隔,預設值為0.1,該值為正數。 |
FitPageOnLoad (Boolean) | 初始化得時候自適應頁面,與使用工具欄上的適應頁面按鈕同樣的效果。 |
FitWidthOnLoad (Boolean) | 初始化的時候自適應頁面寬度,與工具欄上的適應寬度按鈕同樣的效果。 |
localeChain (String) | 設定地區(語言),目前支援以下語言。
en_US (English) fr_FR (French) zh_CN (Chinese, Simple) es_ES (Spanish) pt_BR (Brazilian Portugese) ru_RU (Russian) fi_FN (Finnish) de_DE (German) nl_NL (Netherlands) tr_TR (Turkish) se_SE (Swedish) pt_PT (Portugese) el_EL (Greek) da_DN (Danish) cz_CS (Czech) it_IT (Italian) pl_PL (Polish) pv_FN (Finnish) hu_HU (Hungarian) |
FullScreenAsMaxWindow (Boolean) | 當設定為true的時候,單擊全屏按鈕會開啟一個flexpaper最大化的新視窗而不是全屏,當由於flash播放器因為安全而禁止全屏,而使用flexpaper作為獨立的flash播放器的時候設定為true是個優先選擇。 |
ProgressiveLoading (Boolean) | 當設定為true的時候,展示文件時不會載入完整個文件,而是逐步載入,但是需要將文件轉化為9以上的flash版本(使用pdf2swf的時候使用-T 9 標籤)。 |
MaxZoomSize (Number) | 設定最大的縮放比例。 |
MinZoomSize (Number) | 最小的縮放比例。 |
SearchMatchAll (Boolean) | 設定為true的時候,單擊搜尋所有符合條件的地方高亮顯示。 |
InitViewMode (String) | 設定啟動模式如"Portrait" or "TwoPage". |
ViewModeToolsVisible (Boolean) | 工具欄上是否顯示樣式選擇框。 |
ZoomToolsVisible (Boolean) | 工具欄上是否顯示縮放工具。 |
NavToolsVisible (Boolean) | 工具欄上是否顯示導航工具。 |
CursorToolsVisible (Boolean) | 工具欄上是否顯示游標工具。 |
SearchToolsVisible (Boolean) |
工具欄上是否顯示搜尋。 |
我經歷的這個懊惱的過程...希望對大家有幫助;
有問題可諮詢我(小民工一個);
微博:TactyBOY
相關推薦
java對文件等、附件線上預覽的詳細開發步驟解析:openOffice+SwfTools+FlexPaper
線上預覽實現簡介: 過程分為:1、使用OpenOffice(JODConverter)將不同型別的附件轉換為.pdf字尾的檔案(PDF); 2、使用SwfTools將pdf檔案轉換為swf檔案;
java移動文件夾、 慎用java file.renameTo(f)方法 、 java從一個目錄復制文件到另一個目錄下 、 java代碼完成刪除文件、文件夾 、
不存在 art 我的電腦 lan nbsp 文件 刪除文件 csdn 結果 java移動文件夾(包含子文件和子文件夾): http://blog.csdn.net/yongh701/article/details/45070353 慎用java file.rename
java對文件的操作
see fileinput 字節數 文件流 name 一段 har else 操作 1、按字節讀取文件內容2、按字符讀取文件內容3、按行讀取文件內容 4、隨機讀取文件內容 public class ReadFromFile { /** * 以字節為單位
Java開發必備:java幫助文件網址下載或線上幫助
* HTML 格式 ( http://download.java.net/jdk/jdk-api-localizations/jdk-api-zh-cn/publish/1.6.0/html/zh_CN/api/index.html ) * zip 格式 ( h
WebForm實現文件上傳,並預覽
image form ict itl lec nbsp style object 是否 實現效果: 頁面代碼: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inh
附件線上預覽控制元件實現的市場調研
附件線上預覽控制元件實現的市場調研 注:此為博主(yjclsx)市場調研的原創文件,若要轉載,請標明出處! 一、POI實現 使用poi元件(是java的jar包,因此.net不支援)可以將excel、word轉換為html,將ppt轉換為圖片,這些都是可以直接被瀏覽器識別的檔案型別,由此實現
郵件附件線上預覽——HTML Filter
郵件附件線上預覽,就是當收到郵件帶有附件時,尤其是超大附件,可以不用下載郵件中的附件,通過web頁面,以線上的方式讀取其中的內容。此功能方便使用者直接檢視附件,節省下載的時間,同時也在很多時候極大的方便了沒有安裝相應軟體的使用者,對於異地登入郵箱使用者,更是一項不錯的服務
java 使用poi將PPT轉為圖片,線上預覽PPT
線上預覽PPT,我的思路為java 使用poi將PPT轉為圖片,圖片儲存到指定的資料夾下面,然後返回生成的圖片名稱集合,將圖片路徑遍歷到前臺的html標籤上,用HTML前臺模仿畫一個PPT框架,操作圖片地址路徑從而實現模擬線上預覽的效果;前臺程式碼省略,如下是後臺的一個工具類
中文文件2-快速上手-MoviePy-預覽
快速瞭解 回到目錄 下面的內容介紹以下MoviePy適用於何種場景以及MoviePy如何工作。 我需要使用MoviePy嗎? 出於以下的情景或原因,我們可能會有使用Python做視訊編輯的需求。 *我們有大量的視訊需要處理,或者採用複雜的方式將他們拼接。 *我們
java對office、pdf文件線上預覽解析(融合進專案中)
最近在專案中要做一個文件的預覽,在網上搜了好多demo,都可以實現其功能,但是放在自己的專案中有點複雜。 先說明本人的開發環境(win7+tomcat7+maven+svn+myeclipse),接下來最直觀的專案需求,如下圖: 當用戶點選預覽的時候能看各種文件,其實在這
java通過url線上預覽Word、excel、ppt、pdf、txt文件中的內容【只獲得其中的文字】
在頁面上顯示各種文件中的內容。在servlet中的邏輯 word: BufferedInputStream bis = null; URL url = null; HttpURLConnection httpUrl = null; // 建立連結 url
apache poi操作office文件----java線上預覽txt、word、ppt、execel,pdf程式碼
在頁面上顯示各種文件中的內容。在servlet中的邏輯 word: BufferedInputStream bis = null; URL url = null; HttpURLConnection httpUrl = null; // 建立連結 u
2017.06.06-日記-面向對象-this關鍵字及JAVA源文件結構
ret 實例 保存 傳參 導包 imp scan 創建 內存地址 這是今天的筆記,只是一些理論,後面有幾個練習一塊貼上來了, this:當前類的對象引用使用場合(都是類的內部):1.獲取實例本身 public A getA(){return this}2.獲取類的成員
Java中IO流文件讀取、寫入和復制
復制 循環 int files catch class close brush system //構造文件File類 File f=new File(fileName); //判斷是否為目錄 f.isDirectory(); //獲取目錄下的文件名 String[] fil
轉發:centos徹底刪除文件夾、文件命令(centos 新建、刪除、移動、復制等命令)
目錄 str detail 文件夾 目的 刪除文件夾 -i 命名 新建文件夾 http://blog.csdn.net/lpdx111/article/details/16877725 centos徹底刪除文件夾、文件命令(centos 新建、刪除、移動、復制等命令:
【Java】對文件或文件夾進行重命名
更改 執行 board oid 文件名 file data- pla bsp 在Java中,對文件或文件夾進行重命名是很簡單的,因為Java的File類已經封裝好renameTo的方法。 修改文件或者文件夾的名字都使用這個方法。例如如下的程序: [java
Python文件管理、亂碼及對passwd文件排序
() oss ora nco ges pool doc post game 1.讀寫文件讀文件: f = open("1.txt") text = f.readlines() print(text)寫文件: f = open(
讀寫文件、文件方法、python2的亂碼問題、python對passwd文件進行排序
__main__ .com 哈哈 == nco star 9.png mar ges 讀寫文件 if __name__==‘__main__‘: filename=input(‘請輸入保存的文件:‘) fdfile=open(filename,‘w+‘)
python之文件操作、OS模塊、面向對象
文件系統、OS、面向對象一 文件操作 1 文件系統和文件 在磁盤上讀寫文件的功能都是由操作系統提供的,現代操作系統不允許普通的程序直接操作磁盤,所以,讀寫文件就是請求操作系統打開一個文件對象(通常稱為文件描述符),然後,通過操作系統提供的接口從這個文件對象中讀取數據(讀文件),或者把數據寫入這個文件對象(寫文
Ceph 之 塊設備、文件系統、對象存儲的使用
ceph 塊設備/對象存儲/文件系統 上面左邊是我的個人微信,如需進一步溝通,請加微信。 右邊是我的公眾號“Openstack私有雲”,如有興趣,請關註。 繼上篇《Ceph 之 使用ceph-deploy部署ceph集群》,ceph集群搭建完成之後,接下來就是使用了,ceph集群可以提供給塊設備、文